SwiftData
SwiftData 使用声明式代码,可轻松保留数据。你可以使用常规 Swift 代码来查询和筛选数据。同时,SwiftData 还能与 SwiftUI 无缝集成。
SwiftData 使用声明式代码,可轻松保留数据。你可以使用常规 Swift 代码来查询和筛选数据。同时,SwiftData 还能与 SwiftUI 无缝集成。
SwiftData 提供了表现力强的轻量级 API,可用于使用纯 Swift 代码对 App 的数据进行建模并持久保留数据。而新增 API 将帮助你构建自定数据存储,处理交易历史记录、模型索引和复合唯一性约束,等等。
你可以通过 @model
使用常规 Swift 类型对数据进行建模,而无需管理其他文件或工具。SwiftData 能自动推断多种关系,你可以使用明确的声明 (如 #Unique) 来描述约束。与 SwiftUI 一样,代码即事实来源。
SwiftData 使用你的模型来构建自定架构,将模型的字段高效地映射到底层存储;并会根据需要从数据库中获取由 SwiftData 管理的对象,在适当的时候将其自动存储,而无需额外操作。你还可以使用 ModelContext API,掌控全局。
默认情况下,SwiftData 使用 Core Data 来实现持久化,但你也可以使用新的 DataStore 协议来实现自己的持久化层。借助 DataStore,SwiftData API 可以与许多类型的持久化 (包括 JSON 文件和网络服务及数据库引擎) 结合使用,而无需更改 SwiftUI 和 SwiftData 建模代码。
在 SwiftUI 视图中,可使用 @query
来获取数据。SwiftData 和 SwiftUI 搭配使用可在底层数据发生变化时,向视图提供实时更新,而无需手动刷新结果。
使用可由编译器进行检查的原生 Swift 类型来查询和筛选数据,以便你在开发过程中及早发现问题。当表达式无法映射到底层存储引擎时,谓词会提供编译时错误。
你可以使用 DocumentGroup 将数据储存在文件中并通过 iCloud 云盘进行同步,也可以使用 CloudKit 在设备之间同步数据。
SwiftData 使用的是 Core Data 的成熟存储架构,因此你可以在同一个 App 中同时使用两者,并使用同一底层存储。当你准备就绪后,Xcode 可以将你的 Core Data 模型转换为类,与 SwiftData 结合使用。