Mam widok SwiftUI, który pobiera obiekt EnvironmentObject o nazwie appModel. Następnie odczytuje wartość appModel.submodel.countw bodymetodzie. Spodziewam się to wiązać mój pogląd na własność countna submodeltak, że ponownie renderuje kiedy aktualizacje własności, ale to nie wydaje się zdarzyć.
Czy to błąd? A jeśli nie, jaki jest idiomatyczny sposób powiązania widoków z zagnieżdżonymi właściwościami obiektów środowiska w SwiftUI?
W szczególności mój model wygląda tak ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
A mój widok wygląda tak ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Gdy uruchamiam aplikację i klikam etykietę, countwłaściwość rośnie, ale etykieta się nie aktualizuje.
Mogę to naprawić, przekazując appModel.submodeljako właściwość ContentView, ale chciałbym tego uniknąć, jeśli to możliwe.