【问题标题】:Incorrect array values when accessing an array from another class?从另一个类访问数组时数组值不正确?
【发布时间】:2015-02-06 14:40:14
【问题描述】:

所以我有一节课:

class FoodListTable: UITableViewController

我为这个类设置的一个属性是一个数组:

var calorieNumberArray = [0,0,0,0,0,0,0,0,0]

我拥有这个数组的原因是基于是否选择了行(使用 tableView Checkmark 可访问性类型)来获取不同的值。 I did some tests and when a row(s) is/are selected, the array values are changing correctly.我还有一个变量可以找到calorieNumberArray 中的值的总和:

var calorieTotal: Float {
    return calorieNumberArray.reduce(0 as Float) { $0 + Float($1) }
}

我还有一门课:

class Menu: Calculator // Calculator class is of type UIViewController

我使用导航栏从FoodListTable 类转换到Menu 类。 在menu类的ViewDidLoad方法中,我尝试访问calorieNumberArraycalorieTotal的值:

override func viewDidLoad() {
        let foodListTableAccess = FoodListTable()
        println(foodListTableAccess.calorieNumberArray)
        println(foodListTableAccess.calorieTotal)

这就是控制台中显示的内容:

[0, 0, 0, 0, 0, 0, 0, 0, 0] // calorieNumberArray
0.0 // calorieTotal

如何从Menu 类正确访问FoodListTable 类,以使calorieNumberArraycalorieTotal 的值保持不变并且不会重置为其原始值?谢谢!

【问题讨论】:

  • 您正在创建 FoodListTable 类的新实例。您需要传递对现有实例的引用。以stackoverflow.com/questions/26662256/… 为例
  • 我阅读了那个问题和答案,我有点理解如何传递变量。如果可能的话,有什么方法可以创建关于如何在这种情况下传递变量的答案?我对编程其他答案的许多部分很陌生,这让我感到困惑。谢谢@Paulw11
  • 当您说您使用菜单栏在两者之间转换时,您是要“返回”到 Menu 类还是前进?
  • 我要上菜单课@Paulw11

标签: ios arrays class swift reduce


【解决方案1】:

Menu 类中的 viewDidLoad 函数正在实例化 FoodListTable 的新实例,并且该新实例中的变量将具有其初始化值。您需要传递对现有实例的引用。您可以在prepareForSegue 中的FoodListTable 中执行此操作。

首先,在您的Menu 类中,添加FoodListTable? 类型的新属性以接收引用,然后在FoodListTable 中添加以下内容 -

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "yourSegueName" {   // Change to suit the name of the segue between the two 

        let menu = segue.destinationViewController as Menu
        menu.foodListTable=self;
    }
}

现在在您的 Menu 实例中,您可以访问 self.foodListTable。

从面向对象的设计中,最好创建一个数据模型对象并在FoodTableViewController 中创建该对象的一个​​实例,然后传递该对象而不是视图控制器本身——这样你就可以解耦你的 '模型”来自您的“视图控制器”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多