@ObservedObject
我在使用和时观察到一种奇怪的模式@Published
。
我将其注入SwiftUI
视图内部,但视图似乎在对象实际更改之前刷新。
因此,@ObservedObject
当我检查它的属性时,我的值不正确@Published
。
如果我添加一个didSet
,objectWillChange.send()
它就会按预期工作。
以下是我正在使用的代码:
class AuthManager: ObservableObject {
@Published public private(set) var user: User {
willSet { print("Will set") }
didSet { print("Did set") }
}
}
struct AuthView: View {
@ObservedObject var authManager: AuthManager
var body: some View {
let _ = Self._printChanges()
print("AuthManager user = \(authManager.user)")
return (
Text("AuthManager Test")
)
}
}
当我在 AuthManager 中更新我的用户对象时,我按以下顺序获取日志:
Will set
AuthView: @self, @identity, _authManager
AuthManager user = xxx // <-- old version
Did set
如果我移除并在中@Published
触发,则行为将按预期工作。objectWillChange.send()
didSet
ObservableObject
我希望视图自动刷新时显示新版本。我是否遗漏了什么,或者我对and有什么不理解@Published
?
谢谢