我仍然不确定结构复制或引用的规则。
我想在从数组迭代结构对象时改变它: 例如在这种情况下我想改变背景颜色 但是编译器对我大喊大叫
struct Options {
var backgroundColor = UIColor.blackColor()
}
var arrayOfMyStruct = [MyStruct]
...
for obj in arrayOfMyStruct {
obj.backgroundColor = UIColor.redColor() // ! get an error
}
最佳答案
struct
是值类型,因此在 for
循环中您正在处理一个副本。
作为测试,您可以试试这个:
swift 3:
struct Options {
var backgroundColor = UIColor.black
}
var arrayOfMyStruct = [Options]()
for (index, _) in arrayOfMyStruct.enumerated() {
arrayOfMyStruct[index].backgroundColor = UIColor.red
}
swift 2:
struct Options {
var backgroundColor = UIColor.blackColor()
}
var arrayOfMyStruct = [Options]()
for (index, _) in enumerate(arrayOfMyStruct) {
arrayOfMyStruct[index].backgroundColor = UIColor.redColor()
}
这里只是枚举索引,直接访问数组中存储的值。
希望这对您有所帮助。
关于Swift - 如何在迭代结构对象时改变它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777891/