在不同视图控制器中使用时,全局变量返回nil值

时间:2017-01-10 03:40:15

标签: ios arrays swift uitableview swift3

我有4个全局变量(String数组),我将它附加在一个视图控制器中(比如firstViewController)。当我尝试在另一个视图控制器中访问它们时附加值后,传递的是nil值

First ViewController

print("\(json)")
            if let stockInfo = json?[0] {

                if let value = stockInfo["l"] as? String {
                    print("Teja\(value)")
                    stockCurrentValue.append(value)
                    print("Teja\(stockCurrentValue)")

                }

                if let cp = stockInfo["cp"] as? String{
                    print("Teja\(cp)")
                    stockCp.append(cp)
                    print("Tea\(stockCp)")
                }

                if  let c = stockInfo["c"] as? String{
                    print("Teja\(c)")
                    stockC.append(c)

                }
                if let pcls_fix = stockInfo["pcls_fix"] as? String{

                    print("Teja\(pcls_fix)")
                    stockPrevValue.append(pcls_fix)

                }


            }

变量stockCurrentValue,stockC,stockCP,stockPrevValue是我声明的四个全局变量。

但是当我尝试在新的viewController中访问它们时

SecondViewController

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    print(selectedStockNames.count)
    return selectedStockNames.count


}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "myStocks") as! StockCell

        cell.stockNameCell.text = selectedStockNames[indexPath.row]


    print("Teja123\(stockCurrentValue)")

    stockValueFromGF = selectedStockValues[indexPath.row]

    print("Teja123\(stockCp)")

    return cell
}

因此,当我在firstViewContoller中打印StockCp值时,我得到了值,但是当我尝试在seconViewController中打印相同的变量时,我得到" []" (零值)

1 个答案:

答案 0 :(得分:0)

使用协议并在视图控制器中从您要设置值的位置进行定义。

使用函数内部全局变量值变化的方法。

调用该函数并在视图控制器中设置要访问变量的委托。