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

    技术2022-07-10  130

    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属性包装器可以在一行中完成此操作:

    &#
    Processed: 0.013, SQL: 9