SwiftData 框架在 WWDC 2023 发布
在 WWDC 2023 上,Apple 推出了 SwiftData,这是一个全新的框架,旨在为 iOS 应用提供声明式、以 Swift 为先的 API,帮助开发者处理数据持久化。SwiftData 能够轻松将 Swift 类转换为持久化模型,并且特别适合与 SwiftUI 配合使用。
SwiftData 的设计理念
SwiftData 的设计理念与 Core Data 截然不同。Core Data 是一个基于 ORM 的持久化框架,严重依赖 Objective-C 的动态能力,通常通过 Xcode 中的 Schema Model Editor 定义持久化模型,并生成 .xcdatamodeld 文件作为数据模型的来源。而 SwiftData 则采用代码优先的方式,开发者直接在代码中定义持久化模型,代码本身即是数据模型的来源。
SwiftData 的核心特性
代码定义模型
SwiftData 使用 Swift 5.9 引入的宏功能,通过@Model宏将 Swift 类标记为持久化模型。例如:@Model class Recipe { @Attribute(.unique) var name: String var summary: String? var ingredients: [Ingredient] }@Model宏会自动为类的每个属性应用@PersistedProperty,并生成初始化代码和其他必要的属性,完全透明地处理持久化逻辑。- 支持简单和复杂类型
SwiftData 原生支持简单类型(如Bool、Int和String),复杂类型则需要遵循Codable协议。 - 与 SwiftUI 深度集成
@Model宏还会使类遵循ObservableObject协议,并使每个持久化属性表现得像@Published属性。开发者可以使用@Query属性将 SwiftUI 视图与持久化模型连接,确保数据变化时视图自动重新渲染。 - 谓词支持
SwiftData 支持定义谓词来过滤数据,并在编译时检查类型匹配,避免运行时错误。 - 跨设备同步
SwiftData 模型可以通过CloudKit或存储在 iCloud Drive 中的文档实现跨设备同步。
SwiftData 与 Core Data 的关系
SwiftData 并不是 Core Data 的封装,而是一个独立的持久化框架。尽管 SwiftData 利用了与 Core Data 相同的底层持久化引擎,但它的 API 和实现是完全独立的。
迁移支持
为了帮助开发者从 Core Data 迁移到 SwiftData,Apple 提供了增量迁移支持。开发者可以在现有的 Core Data 应用中逐步引入 SwiftData,并提供了示例项目展示如何实现这一点。
总结
SwiftData 是 Apple 在数据持久化领域的一次重要革新,它通过代码优先的方式简化了模型定义,深度集成 SwiftUI,并提供了强大的跨设备同步功能。同时,SwiftData 支持从 Core Data 逐步迁移,为开发者提供了更灵活的选择。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。