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参数直接

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