В типичном приложении Swift я могу иметь словарь и написать такой код:
let e = dict[key]!
e.foo = "x"
И элемент будет обновлен в словаре, как и ожидалось.
Однако похоже, это не работает в SwiftUI!
Если в userContext
у нас есть Dictionary<Person>
(Person
- класс), следующий код работает и обновляет словарь, как и ожидалось:
self.userContext.dict[self.id]!.foo = "1234"
То есть в отладчике я вижу это:
po self.userContext.dict
// dict[self.id].foo is "1234" as expected
(userContext
- это класс @EnvironmentObject со словарем внутри него)
Но этот код не обновляет словарь в userContext
:
var e = self.userContext.dict[self.id]!
e.foo = "1234"
po self.userContext.dict
// dict[self.id].foo is the old value, not "1234"
Я что-то не так делаю?