Изменение значения структур внутри массива структур - PullRequest
2 голосов
/ 07 февраля 2020

У меня есть такая структура

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

, а затем массив MyStruct

var myArray : [MyStruct]? ...

Как только я создаю массив MyStruct каждый элемент внутри этого массив не является мутирующим, верно?

Проблема в том, что в какой-то момент мне нужно сканировать этот массив и обновить поле всех элементов, например, обновить affiliated для каждого элемента myArray и это обновление асинхронный.

Это моя проблема. Все элементы внутри myArray не изменяются.

Я бы решил, что воссоздаю каждый элемент MyStruct с новым значением для affiliated, воссоздаем myArray и заменяем старый массив этим новый.

Кажется глупым методом, пустой тратой времени и усилий.

Есть ли лучший способ сделать это?

1 Ответ

4 голосов
/ 07 февраля 2020

Как только я создаю массив MyStruct, каждый элемент внутри этого массива не является мутирующим, верно?

Не обязательно. Но так как массивы являются типами значений, вы должны обновить элемент массива непосредственно в массиве, например

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

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