作为 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为我们铺就的道路。
以下是这四个特定功能,它们将帮助您理解我的意思:
NSManagedObject
符合 ObservableObject
协议,这意味着我们可以将任何对象绑定到用户界面的一部分。ManagedObjectContext
密钥,用于存储我们活动的 Core Data
托管对象上下文。Xcode
的模板将该上下文注入到初始内容视图中。@FetchRequest
属性包装器,该包装器使用环境的托管对象上下文执行提取请求。因此,我们在应用程序启动时创建一个托管对象上下文,将其附加到我们的视图环境中,然后使用 @FetchRequest
加载数据以供应用程序使用。