修改结构数组中结构的值



我有一个这样的结构

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)

最新更新