修改结构数组中结构的值

Modifying the value of structs inside an array of structs

我有这样的结构

struct MyStruct {
  var name : String?
  var address : String?
  var affiliated : Bool?
}

然后是MyStruct

的数组
var myArray : [MyStruct]? ...

一旦我创建了一个 MyStruct 数组,该数组中的每个元素都是非变异的,对吗?

问题是在某些时候我必须扫描该数组并更新所有元素的字段,例如为 myArray 的每个元素更新 affiliated 并且此更新是异步的。

这是我的问题。 myArray 中的所有元素都没有发生变化。

我解决这个问题的方法是用 affiliated 的新值重新创建每个 MyStruct 元素,重新创建 myArray 并用这个新数组替换旧数组。

看来是个笨办法,费时费力

有更好的方法吗?

As soon as I create an array of MyStruct every element inside that array is non-mutating, right?

不一定。但是由于数组是值类型,您必须直接在数组中更新数组的元素,例如

var myArray = [MyStruct(name: "Foo", address: nil, affiliated: false), MyStruct(name: "Bar", address: nil, affiliated: false)]

myArray[1].affiliated = true
print(myArray)