Saya memiliki tampilan SwiftUI yang menggunakan EnvironmentObject yang dipanggil appModel. Kemudian membaca nilai appModel.submodel.countdalam bodymetodenya. Saya berharap ini untuk mengikat pandangan saya ke properti countdi submodelsehingga membuat kembali ketika properti diperbarui, tetapi ini tampaknya tidak terjadi.
Apakah ini bug? Dan jika tidak, apa cara idiomatis untuk memiliki pandangan mengikat properti bersarang objek lingkungan di SwiftUI?
Secara khusus, model saya terlihat seperti ini ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
Dan pandangan saya terlihat seperti ini ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Ketika saya menjalankan aplikasi dan mengklik label, countproperti bertambah tetapi label tidak memperbarui.
Saya dapat memperbaikinya dengan melewatinya appModel.submodelsebagai properti ContentView, tetapi saya ingin menghindari melakukannya jika memungkinkan.