【问题标题】:Modify an object value in array using swift [duplicate]使用swift修改数组中的对象值[重复]
【发布时间】:2017-02-24 13:38:38
【问题描述】:

我是 swift 新手。 我想知道如何使用 swift 在 for-each 循环中修改对象。 例如:

结构 MyCustomObject { var customValue:字符串? }

让 myArray: [MyCustomObject?]

for anObject:MyCustomObject in myArray {
    anObject.customValue = "Hello" // <---Cannot assign to property: 'anObject' is a 'let' constant 
}

所以,如果我想在 for 循环中更改对象值该怎么办。 我厌倦了在一个对象之前添加“var”,但它不起作用! (数组中的对象仍然保持不变。)

对于目标 C 来说,这很容易,

NSMutableArray * myArray = [NSMutableArray 数组];

for (MyCustomObject * object in myArray) 
{ 
  object.customValue = "Hello" 
}

【问题讨论】:

  • myArraylet 还是 var
  • myArray 是一个“让”。枚举您的数组并使用索引更改数组元素
  • 您希望更改永久保留在您的阵列中,还是希望它们在循环期间只是临时的?
  • 我想永久更改“anObject.customValue”!

标签: ios swift


【解决方案1】:

这是因为存储在数组中的值是不可变的。你有两个选择:

1:将MyCustomObject改成一个类:

class MyCustomObject { var customValue: String? }

2:按索引迭代

for i in 0..<myArray.count {
    if myArray[i] != nil {
        myArray[i]!.customValue = "Hello"
    }
}

【讨论】:

  • 简单易懂!
【解决方案2】:
 let temObj:MyCustomObject  = anObject  
 temObj.customValue = "Hello"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-11
    • 2021-04-30
    • 2020-02-04
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多