SwiftUI 2.0 一篇文章講透 @AppStorage、@StateObject和@SceneStorage (wwdc20)

SwiftUI 2.0 一篇文章講透 @AppStorage、@StateObject和@SceneStorage

SwiftUI在WWDC 2020期間進行了一些重大的新增強。其中引人注目的是增加了SwiftUI屬性包裝器庫。 屬性包裝器在SwiftUI應用程序中大量用於更新和觀察視圖,並且是SwiftUI數據管理的關鍵部分。

iOS 14爲我們提供了三個用於數據持久性的新屬性包裝器:

  • @AppStorage
  • @StateObject
  • @SceneStorage
    在接下來的幾節中,我們將在新的Xcode 12中(在撰寫本文時爲beta版)對其進行研究。

SwiftUI @AppStorage

AppStorage屬性包裝器用於讀取和寫入值到UserDefaults。 每次AppStorage屬性包裝器的值更改時,SwiftUI視圖都會失效並重新繪製。

除了用於方便地在UserDefaults鍵和SwiftUI視圖之間進行通信外,它的行爲與@State屬性包裝器相同。 以下代碼顯示了我們如何在iOS 14之前使用UserDefaults和State屬性包裝器:

@State var name: String = "" {
    get {
        UserDefaults.standard.string(forKey: "name")
    }
    set {
        UserDefaults.standard.set(newValue, forKey: "name")
    }
}

新的@AppStorage屬性包裝器可以在一行中完成此操作:

@AppStorage("name") var name: String = "hey"

AppStorage還允許您對UserDefaults使用不同於標準的其他suiteName。
此外,我們還可以使用wraptedValue參數直接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章