修改结构数组中结构的值
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)
我有这样的结构
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)