Tengo una vista SwiftUI que toma un objeto de entorno llamado appModel. Luego lee el valor appModel.submodel.counten su bodymétodo. Espero que esto se una a mi punto de vista de la propiedad countde submodelmanera que cuando se vuelve a renderizar, pero esto no parecen los cambios de propiedad a suceder.
¿Es esto un error? Y si no, ¿cuál es la forma idiomática de hacer que las vistas se unan a las propiedades anidadas de los objetos del entorno en SwiftUI?
Específicamente, mi modelo se ve así ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
Y mi punto de vista se ve así ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Cuando ejecuto la aplicación y hago clic en la etiqueta, la countpropiedad aumenta pero la etiqueta no se actualiza.
Puedo arreglar esto pasando appModel.submodelcomo una propiedad a ContentView, pero me gustaría evitar hacerlo si es posible.