Ich habe eine SwiftUI-Ansicht, die ein aufgerufenes EnvironmentObject aufnimmt appModel. Es liest dann den Wert appModel.submodel.countin seiner bodyMethode. Ich erwarte , dass dies meine Ansicht nach auf die Eigenschaft binden , countauf , submodelso dass es wieder macht , wenn die Eigenschaft Updates, aber dies nicht zu geschehen scheint.
Ist das ein Fehler? Und wenn nicht, wie können Ansichten idiomatisch an verschachtelte Eigenschaften von Umgebungsobjekten in SwiftUI gebunden werden?
Insbesondere sieht mein Modell so aus ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
Und meine Ansicht sieht so aus ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Wenn ich die App starte und auf das Etikett countklicke, erhöht sich die Eigenschaft, aber das Etikett wird nicht aktualisiert.
Ich kann dies beheben, indem ich appModel.submodelals Eigentum an übergeben werde ContentView, aber ich möchte dies nach Möglichkeit vermeiden.