为什么在初始化中将此分配给@State var无效?
class getOldValuesFromDb : ObservableObject {
@State var oldValue: Int = 0
init(){
let val = 999
self.oldValue = val
print("OldValue: \(self.oldValue) and Val: \(val)")
}
}
val
的值显示正确,但是当我将其分配给oldValue
时,它的值仍为零。我的print()
看起来像这样:
OldValue: 0 and Val: 999
怎么可能?
答案 0 :(得分:2)
我不确定@State
之外应该使用View
。
SwiftUI管理您声明为状态的任何属性的存储。状态值更改时,视图会使外观无效并重新计算主体。将状态用作给定视图的唯一事实来源。
和
您应仅从视图主体内部或通过其调用的方法访问状态属性。因此,请将状态属性声明为私有,以防止视图的客户端访问它。从任何线程更改状态属性都是安全的。
您尝试使用@Published代替吗?