Ios 对象数组包含对象内部的所有相同值
我是Swift新手,在使用对象数组时遇到了问题Ios 对象数组包含对象内部的所有相同值,ios,arrays,swift,Ios,Arrays,Swift,我是Swift新手,在使用对象数组时遇到了问题 class myClass { var test: Int? static func testFunc() { var array = [myClass] (count: 30, repeatedValue: myClass()) for i in 0...20 { array[i].test = i*2 } for a in 0...20
class myClass {
var test: Int?
static func testFunc() {
var array = [myClass] (count: 30, repeatedValue: myClass())
for i in 0...20 {
array[i].test = i*2
}
for a in 0...20 {
println(array[a].test)
}
}
}
我真的不知道这里会出什么问题,但我的结果总是40,而不是0到40:
Optional(40)
Optional(40)
Optional(40)
etc......
有人知道如何解决这个问题吗?几乎有点像一个bug。count:repeatedValue:initializer在数组的每个位置安装完全相同的对象 因此,当您将数组[0].test更改为某个值时,您正在更改存储在单个myClass实例中的值,该实例在数组的所有索引中共享。查看索引19,您会看到相同的myClass对象,其值已更改 因此,请使用循环来初始化阵列:
var array = [myClass]()
for (i in 1...20)
{
let anItem = myClass()
anItem.test = i
array.append(anItem)
}
谢谢,这解决了我的问题。但是它必须是第一行的'var array=[myClass]()')。哦,是的。忘了那一点。