苹果推出 持久化框架的技术革新 SwiftData (ios持久化几种方式)

苹果推出 持久化框架的技术革新 SwiftData (ios持久化几种方式)

苹果于 WWDC 2023 上推出新框架 SwiftData,提供声明性的、以 Swift 为先的 API,可在 iOS 应用中进行数据持久化工作。SwiftData 可轻松将一个 Swift 类转换为一个持久化模型,非常适合同 SwiftUI 一并使用。

在几年前通过 SwiftUI 改变了 UI 在其平台上的定义方式后,苹果正在迈出超越 Core>

虽然 SwiftUI 所提供的 API 让持久化模型的定义成为可能,但这种方式却颇为繁琐。Core>.xcdatamodeld是真实之源,可被用于自动生成存根(stub)。存根所提供的基类则被用作实际模型的基类。

SwiftData 的方式则完全相反,它是将代码看作是真实之源,并以此定义一个简单的模型:

@Modelclass Recipe {@Attribute(.unique) var name: Stringvar summary: String?var ingredients: [Ingredient]}
复制代码

仔细看能发现 SwiftData 是如何依赖 Swift 5.9 中新引入的宏功能。简而言之,宏会将 @PersistedProperty 应用于类的所有属性,并在类的实现中添加初始化代码和其他的必要属性。

由于这层额外的逻辑对开发者而言完全透明,SwiftData 得以将所有属性映射至其底层存储。据苹果公司称,持久性对象会在需要时从持久化存储中获取并更新。

、、等简单类型支持开箱可用,但更为复杂的类型则必须要符合协议,才能于持久化类中使用。

如上文所述,SwiftData 与 SwiftUI 的相性很好。而事实上,宏也会让类在符合 ObservableObject 协议的同时,让所有持久化的属性表现为 @Published 属性的形式。此外,将 SwiftUI 视图接入持久化模型只需使用一个新的属性。与和的使用方式相类似,每次底层数据发生变化时,可确保视图的自动重新渲染。

SwiftData 中还提供对谓词(Predicate)定义的支持,可用于过滤数据。编译时对谓词进行检查,并对类型不匹配的问题报编译错误。此外,SwiftData 模型也可通过或以 iCloud 云盘中存储的文件形式进行跨设备同步。

为让开发者能更为轻松地迁移至 SwiftData,该框架支持在现有 Core target="_blank">演示项目中展示了如何在一个 Core>

最后值得留意的是,SwiftData 并不是换了皮的 Core target="_blank">演示的,SwiftData 是借助了同 Core>

原文链接

Apple Introduces SwiftData, a SwiftUI-Ready Core>

相关阅读:

Swift 5.8新特性预览:支持函数向后部署

苹果现已支持 Swift 包索引

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。