我有一个SwiftUI视图,其中包含一个名为的EnvironmentObject appModel
。然后读取值appModel.submodel.count
在其body
方法中。我希望这会将我的观点绑定到该属性count
上,submodel
以便在属性更新时重新呈现该属性,但这似乎不会发生。
这是一个错误吗?如果不是,将视图绑定到SwiftUI中环境对象的嵌套属性的惯用方式是什么?
具体来说,我的模型看起来像这样...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
我的观点看起来像这样...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
当我运行该应用并点击标签时, count
属性会增加,但标签不会更新。
我可以通过将appModel.submodel
属性作为传入来解决此问题ContentView
,但如果可能的话,我想避免这样做。
我也在设计这样的应用程序。在过去的应用程序开发中,我通常有一个全局App对象。还有人认为超级“ App”类作为环境变量的这种设计将成为标准做法吗?我也在考虑使用多个EnvironmentObject,但这很难维护。
—
Michael Ozeryansky '19