【问题标题】:Swift updating property of an object in Array, doesn't work快速更新数组中对象的属性,不起作用
【发布时间】:2015-09-22 11:55:27
【问题描述】:

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

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"

编辑: 我找到了!!!该数组是单属性。我在调用 MyClass().myArray,而不是调用 MyClass.sharedInstance.myArray

【问题讨论】:

  • 你试过了吗:myArray[0].property = "new Value"
  • 我刚刚将您的代码复制到了一个游乐场,它工作正常。值已更新,secondObject.property"new value"
  • 你的代码works in a Playground
  • @sasquatch,我首先尝试了它。但是值没有保存
  • @Adam,我简化了问题的代码 t=。我会用原始代码更新我的问题

标签: arrays swift


【解决方案1】:

这取决于它在数组中的内容。如果它是一个类,它将是对实例的引用。如果它是一个结构体,你在分配时会得到它的一个副本,导致你对副本所做的更改不会应用到对象上。

数组中有什么?

【讨论】:

  • 我找到了!!!该数组是单属性。我正在调用 MyClass()。 myArray,而不是调用 MyClass.sharedInstance.myArray
【解决方案2】:

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

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

【讨论】:

  • object 没有被更改。无需声明为var
  • 我找到了!!!该数组是单属性。我正在调用 MyClass()。 myArray,而不是调用 MyClass.sharedInstance.myArray
【解决方案3】:

我找到了!!!该数组是单属性。我正在调用 MyClass()。 myArray,而不是调用 MyClass.sharedInstance.myArray

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 2021-11-29
    • 2021-02-27
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多