我正在使用函数使用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.
}
}
我可以看到数组是空的,因为我总是在每次添加后打印计数。
有没有其他人经历过类似的事情?
答案 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")
}
}