我仍然不确定 struct 复制或引用的规则.

我想在从数组对 struct 对象进行迭代时对其进行变异:

struct Options {
  var backgroundColor = UIColor.blackColor()
}

var arrayOfMyStruct = [MyStruct]

...

for obj in arrayOfMyStruct {
  obj.backgroundColor = UIColor.redColor() // ! get an error
}

推荐答案

struct是值类型,因此在for循环中处理的是副本.

作为测试,您可以try 以下方法:

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相关问答推荐

避免嵌套导航TabView

expose 不透明的底层类型

如何使用Duration.TimeFormatStyle以h m s格式快速格式化时间

更改 SwiftUI 中按钮矩阵的填充 colored颜色

如何在设备(或常量)地址空间中创建缓冲区?

使第二个视图变灰 SwiftUI

TextField 键入未完成

如何在 UITableView 中点击图片和标题

Xcode:方法参数的代码完成

SwiftUI:从存储在 observableObject 中的数组中删除对象时查看崩溃

不要从 NumberFormatter 获取货币符号

如何仅将 SwiftUI 不透明度应用于父视图?

将强制向下转换视为可选将永远不会产生零

SwiftUI - 呈现工作表后导航栏按钮不可点击

在 Swift 中以编程方式更新约束的常量属性?

Swift:创建 UIImage 数组

如何快速识别字符串中的大写和小写字符?

如何在 SwiftUI 中为删除和禁用配置 ContextMenu 按钮?

使用相机进行人脸检测

如何快速显示数组的所有元素?