Swift - Array不会保存元素

时间:2014-10-14 09:49:38

标签: arrays swift

我正在使用函数使用array.append()向数组添加元素。奇怪的是,数组不保存元素,在检查计数时,它将为空。将相同的代码放入Playground时,它会像它应该的那样工作。

Class 1(函数用于添加元素):

class FirstClass {
    var array:[(Int, Int, String)] = []

    func add(var1:Int, var2:Int, var3:String)
    {
        array.append((Int, Int, String)(var1, var2, var3))
        println(array.count)
    }
}

Class 2(从我调用函数的地方):

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        FirstClass().add(1, 2, "xxx")
        FirstClass().add(2, 1, "xxx")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

我可以看到数组是空的,因为我总是在每次添加后打印计数。

有没有其他人经历过类似的事情?

1 个答案:

答案 0 :(得分:2)

每次向数组添加元素时,都会创建FirstClass的实例,因此前一个元素会丢失。您应该只创建FirstClass的一个实例,并在其上调用add方法:

var firstClass = FirstClass()
firstClass.add(1, 2, "xxx")
firstClass.add(2, 1, "xxx")

如果希望firstClass保留在类实例中,请将其声明为属性:

class ViewController: UIViewController {
    var firstClass = FirstClass()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.firstClass.add(1, 2, "xxx")
        self.firstClass.add(2, 1, "xxx")
    }

}