更新时间:2023-02-12 07:53:48
尝试使用@Published属性. 尝试实现这样的东西:
Try to make use of the @Published property. Try to implement something like this:
class SessionStore : ObservableObject {
@Published var session: User
}
class User: ObservableObject {
@Published var uid: String
@Published var email: String?
@Published var displayName: String?
init(uid: String, displayName: String?, email: String?) {
self.uid = uid
self.email = email
self.displayName = displayName
}
}
当User对象(例如电子邮件或显示名)发生更改时,这应该会更新您的视图,因为它们已发布. 希望这会有所帮助,gl
This should update your view when a change was made in the User object, like the email or displayname because they're Published. Hope this will help, gl
已更新:
由于SwiftUI还不支持嵌套的Observable,因此您需要自己通知主模型.
Because SwiftUI doesn't support nested Observables yet, you need to notify your main model by yourself.
请参见以下代码片段,以了解如何在ObservableObject中使用嵌套的ObservableObject:
See this snippet how to work with a nested ObservableObject inside a ObservableObject:
class Submodel1: ObservableObject {
@Published var count = 0
}
class Submodel2: ObservableObject {
@Published var count = 0
}
class Model: ObservableObject {
@Published var submodel1: Submodel1 = Submodel1()
@Published var submodel2: Submodel2 = Submodel2()
var anyCancellable: AnyCancellable? = nil
var anyCancellable2: AnyCancellable? = nil
init() {
anyCancellable = submodel1.objectWillChange.sink { (_) in
self.objectWillChange.send()
}
anyCancellable2 = submodel2.objectWillChange.sink { (_) in
self.objectWillChange.send()
}
}
}
当子模型中的数据更改时,主模型将通知自己.这将导致视图上的更新.
When data inside a submodel changes, the main Model will notify itself. This will result in a update on the view.
让我知道这是否对您有帮助..祝你好运!
Let me know if this helped you out.. Goodluck!