Swift更新Array中对象的属性不起作用

时间:2015-09-22 11:55:28

标签: arrays swift

我试图更新数组中对象的属性,但它不起作用。 我尝试替换数组中的整个对象,但它没有帮助

let object = myArray[0]
object.property = "new value"
myArray[0] = object
print(object.property) //"new value"

let sameObject = myArray[0]
print(sameObject.property) //"old value"

编辑: 我找到了!!!阵列是singelton属性。我正在调用MyClass()。myArray,而不是调用MyClass.sharedInstance.myArray

3 个答案:

答案 0 :(得分:4)

这取决于它在数组中的含义。如果它是一个类,它将是对实例的引用。如果它是一个结构体,您将在分配时获得它的副本,从而导致您对未应用于该对象的副本所做的更改。

数组中有什么?

答案 1 :(得分:1)

我找到了!!!阵列是singelton属性。我在调用MyClass()。 myArray,而不是调用MyClass.sharedInstance.myArray

答案 2 :(得分:0)

我认为是因为你声明了数组let:这意味着它将保持不变。尝试将其声明为var,然后它应该可以正常工作。

修改 你是对的,我想我当时误解了你的问题;但我发现这个answer可能很有用;最后你应该声明它var