У меня есть представление 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
, но я бы хотел избежать этого, если это возможно.