附加在函数内的数组在其他类中不起作用

时间:2015-06-28 22:41:54

标签: ios arrays xcode swift class

我的问题是我有4个空数组:

Toast.makeText(getBaseContext(),"MESSAGE", Toast.LENGTH_LONG).show()

在课程var Names:[String] = [] var Amounts:[Int] = [] var Dates:[NSDate] = [] var Images:[UIImage] = [] 内。

我在NewPersonViewController内也有一个函数:

NewPersonViewController

按下按钮时,我会调用func create(){ Names.append(nameField.text) Amounts.append(amountField.text.toInt()!) Dates.append(dateToBePaid.date) } 。该函数只是一个按钮动作,在create()内声明。

我的问题:当我在不包括NewPersonViewController的另一个类(在另一个文件中)打印出数组时,我得到了这个:

Images

是的,这就是我的输出。先感谢您。旁注:我是swift的新手:)

2 个答案:

答案 0 :(得分:1)

除非您刚刚发布了一些玩具代码,否则您的设计似乎存在很多问题。

但是,您可能遇到的具体问题是,在Swift中,数组是" value types"。基本上它意味着如果你传递一个数组,Swift实际上每次都会复制。因此,如果您在另一个类中编辑副本2,它不会影响原始类中的副本1。

如果你只是想让你的代码工作而不重构来处理这个问题(你应该真的重构),最简单的方法是使用NSMutableArray而不是Swift数组。 NSMutableArray是一个类,它是一个"引用类型"。您可以传递它,进行更改,并从任何地方使用它。因为你实际上只传递了一个"引用",所以只有一个数组,你所做的改变到处都是。

答案 1 :(得分:0)

我在这里比较新,但如果你将数组移出ViewController,它们将成为GLOBAL变量,并可在任何其他View或Table Controller中访问。我刚尝试过,它工作得很好。

对于全局变量,我总是添加一个前缀“gl_”,所以我知道这是一个全局变量,这意味着它们需要小心使用。一般而言,全球变量存在风险,应该节约使用恕我直言,并考虑使用它们带来的任何风险......尤其是安全风险。

在我的ViewController.swift文件中:

    date    number  type    sort
    2012-03-23  3660    d   1
    2015-06-01  1890    k   2
    2015-06-02  8370    k   3
    2015-06-11  4345    k   4
    2015-06-11  4345    k   5
    2015-06-11  4345    k   6
    2015-06-11  4345    k   7
    2015-06-11  4345    k   8
    2015-06-11  4345    k   9
    2015-06-11  3534    k   4
    2015-06-11  3534    k   5