我有一个这样的结构
struct MyStruct {
var name : String?
var address : String?
var affiliated : Bool?
}
然后是一系列MyStruct
var myArray : [MyStruct]? ...
一旦我创建了一个MyStruct
数组,该数组中的每个元素都是不变异的,对吧?
问题是在某些时候我必须扫描该数组并更新所有元素的字段,例如为myArray
的每个元素更新affiliated
,并且此更新是异步的。
这是我的问题。myArray
中的所有元素都没有变异。
我解决这个问题的方法是使用affiliated
的新值重新创建每个MyStruct
元素,重新创建myArray
并用这个新数组替换旧数组。
这似乎是一种愚蠢的方法,浪费时间和精力。
有没有更好的方法可以做到这一点?
一旦我创建了一个 MyStruct 数组,该数组中的每个元素都是不变异的,对吧?
不一定。但是由于数组是值类型,您必须直接在数组中更新数组的元素,例如
var myArray = [MyStruct(name: "Foo", address: nil, affiliated: false), MyStruct(name: "Bar", address: nil, affiliated: false)]
myArray[1].affiliated = true
print(myArray)