AppStorage 与 CoreData

Posted

技术标签:

【中文标题】AppStorage 与 CoreData【英文标题】:AppStorage vs CoreData 【发布时间】:2020-08-16 13:16:51 【问题描述】:

最近 SwiftUI 的新手,并注意到在 ios 14 中引入了属性包装器@AppStorage。 想知道@AppStorageCoreData的区别

struct ContentView: View 
  @AppStorage("isDarkMode") 
  private var isDarkMode: Bool = false

  var body: some View 
    VStack 
      Text(isDarkMode ? "Dark" : "Light")

      Toggle(isOn: $isDarkMode) 
        Text("Switch Mode")
      .fixedSize()
    
  

【问题讨论】:

AppStorage 只是 UserDefaults 的一个方便的可观察包装器。 【参考方案1】:

AppStorageUserDefaults 的属性包装器,用于SwiftUI。因此,无论您使用 AppStorage 存储什么,也可以通过 UserDefaults 获得。

@AppStorage("isDarkMode") private var isDarkMode: Bool = false
//...
let isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode")

CoreData 是您存储大量数据的地方。你可以通过这个post。

【讨论】:

以上是关于AppStorage 与 CoreData的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ViewModel 中使用带有自定义类型和 @Published 的 @AppStorage?

使用 @AppStorage 进行设置的 SwiftUI 最佳实践:如何在加载 @AppStorage 之前读取 UserDefaults?

SwiftUI:绑定到@AppStorage

使用@AppStorage 保存唯一的字符串数组

SwiftUI @AppStorage 不在函数中刷新

更新单独结构中的@AppStorage 后如何更新 SwiftUI 视图