Swift - 如何在迭代结构对象时改变它

标签 swift struct copy mutable

我仍然不确定结构复制或引用的规则。

我想在从数组迭代结构对象时改变它: 例如在这种情况下我想改变背景颜色 但是编译器对我大喊大叫

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/

相关文章:

ios - GMSMapView 能源影响

file - io.Copy() 的稀疏文件很大

php - 复制php资源

swift - WkWebView 中 PDF 的第一页呈现像素化

swift - 阅读 Firebase DB 的一个实例 - Swift

c - 结构数组中的 strstr 字符数组

c - 使用 malloc 初始化结构内部的结构?

c - 结构字段中的 strcpy/strncpy 段错误

python - 对于相同大小的列表,为什么深复制比浅复制慢得多?

arrays - 快速拆分数组的优雅方式