У меня есть следующий код игровой площадки xcode, чтобы проиллюстрировать эту проблему:
import SwiftUI
struct S1 {
var list = ["a", "b"]
}
class C1 {
var s1 = State(initialValue: S1())
var s2 = S1()
}
var c1 = C1()
var list = c1.s1.wrappedValue.list
list.append("d")
var s1_modified = c1.s1.wrappedValue
s1_modified.list = list
s1_modified.list
// prints ["a","b","d"]
c1.s2 = s1_modified
c1.s2.list
// prints ["a","b","d"] as expected
c1.s1.wrappedValue = s1_modified
c1.s1.wrappedValue.list
// prints ["a","b"]
// expected ["a","b","d"]
Я пробовал много вариантов этого. Мне нужен экземпляр состояния для передачи различных объектов представления в моей сложной иерархии, и я не хочу создавать отдельное состояние в каждом из них (становится слишком беспорядочно). Неужели так сложно вручную присвоить значение экземпляру State, не заключенному в оболочку @State? Я действительно хочу, чтобы sh они открыли исходный код этого кода, чтобы мы могли решить подобную проблему за считанные минуты, вместо того, чтобы тратить бесчисленные часы, пытаясь угадать, что они делают c.