簡體   English   中英

為什么我不能在 SwiftUI init 中為 @State var 賦值?

[英]Why I can't I assign a value to an @State var in SwiftUI init?

為什么這個分配給 init 中的 @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這怎么可能?

我不確定@State是否應該在View之外使用。

蘋果文檔

SwiftUI 管理您聲明為 state 的任何屬性的存儲。 當 state 值更改時,視圖使其外觀無效並重新計算主體。 使用 state 作為給定視圖的唯一真實來源。

您應該只從視圖主體內部或從它調用的方法訪問 state 屬性。 因此,將您的 state 屬性聲明為私有,以防止您的視圖的客戶端訪問它。 從任何線程改變 state 屬性是安全的。

您是否嘗試使用@Published代替?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM