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")