在 SwiftUI 中使用 Core Data 的简介

作为 Apple 软件平台的两个重要组成部分,得知 Core Data 和 SwiftUI 可以很好地协同工作就不会让您感到惊讶:我们获得了属性包装器,环境支持等,所有这些都确保我们可以集成 Core Data 轻松地加入我们的 SwiftUI 应用程序。

SwiftUI 之前,通常会发现从架构的角度来看您会发现正在使用 Core Data 的多种方法 - Apple 强烈鼓励我们在 AppDelegate 级别创建容器,然后根据需要进行备份,其他人则首选使用管理器类,还有一些人更喜欢完全将 Core Data 提取出来,以便他们以后可以自由地迁移到Realm或其他选项。

但是,SwiftUI 与 Core Data 的集成是不同的,因为它在一个方向上指向很强:在应用启动时创建一次 Core Data 容器,将其托管对象上下文注入环境,然后直接在该环境中执行获取请求。

这不是我的猜测-Apple实际上是按照高度特定的方式进行设计的,如果您想利用SwiftUI的Core Data集成的所有功能,那么您应该遵循Apple为我们铺就的道路。

以下是这四个特定功能,它们将帮助您理解我的意思:

  1. NSManagedObject 符合 ObservableObject 协议,这意味着我们可以将任何对象绑定到用户界面的一部分。
  2. 该环境中有一个 ManagedObjectContext 密钥,用于存储我们活动的 Core Data 托管对象上下文。
  3. 然后,Xcode的模板将该上下文注入到初始内容视图中。
  4. 有一个 @FetchRequest 属性包装器,该包装器使用环境的托管对象上下文执行提取请求。

因此,我们在应用程序启动时创建一个托管对象上下文,将其附加到我们的视图环境中,然后使用 @FetchRequest 加载数据以供应用程序使用。