【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

苹果推出 SwiftData,持久化框架的技术革新

  • 2023-06-19
    北京
  • 本文字数:1115 字

    阅读完需:约 4 分钟

苹果推出 SwiftData,持久化框架的技术革新

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


在几年前通过 SwiftUI 改变了 UI 在其平台上的定义方式后,苹果正在迈出超越 Core Data 的第一步,即一个基于 ORM、严格绑定于 Objective-C 动态能力的持久化框架。


虽然 SwiftUI 所提供的 API 让持久化模型的定义成为可能,但这种方式却颇为繁琐。Core Data 通常是在 Xcode 内集成的 Schema Model 编辑器上使用,由此生成的 .xcdatamodeld 是真实之源,可被用于自动生成存根(stub)。存根所提供的基类则被用作实际模型的基类。


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


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


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


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


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


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


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


为让开发者能更为轻松地迁移至 SwiftData,该框架支持在现有 Core Data 应用中的逐步采用,在苹果提供的演示项目中展示了如何在一个 Core Data 应用中仅部分使用 SwiftData。


最后值得留意的是,SwiftData 并不是换了皮的 Core Data。正如苹果于 WWDC 中所演示的,SwiftData 是借助了同 Core Data 一样的持久化引擎,但却是一个完全独立的堆栈。


原文链接

Apple Introduces SwiftData, a SwiftUI-Ready Core Data Replacement


相关阅读:

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

苹果现已支持 Swift 包索引

2023-06-19 08:005554

评论

发布
暂无评论
发现更多内容

百度爬虫的工作原理解析

快乐非自愿限量之名

百度 爬虫 爬虫分享

翻过电商独立网站“三座大山”,华为云助力企业勇攀高峰

轶天下事

上海站 | RocketMQ Meetup 重磅来袭

Apache RocketMQ

开源 消息中间件 微服务、 消息列队

Scrum敏捷开发培训敏捷开发团队必修课

顿顿顿

scrum敏捷工具 scrum培训 敏捷开发培训 敏捷研发管理工具 scrum研发工具

程序员惶恐?GPTs大火,AI编程不会成为主流?

代码生成器研究

镭速,克服UDP传输缺点的百倍提速传输软件工具

镭速

文件传输工具 大文件传输工具 UDP传输

低代码的能力边界在哪?

代码生成器研究

使用低代码可视化开发平台快速搭建应用

这我可不懂

低代码 可视化 JNPF

关于代码混淆,看这篇就够了

雪奈椰子

软件测试/人工智能|思维导图很难画,ChatGPT来帮你

霍格沃兹测试开发学社

低代码平台有哪些优势?

代码生成器研究

轻量应用服务器首选华为云,为何说是中小企业的最佳选择?

轶天下事

低代码需要什么配置的电脑?

代码生成器研究

当AI加上低代码,未来将如何颠覆我们的世界

代码生成器研究

爱莫科技 ×英特尔®丨「虚拟店长」轻松提升消费者店消费体验

科技热闻

你怎么看低代码平台技术?

代码生成器研究

存在争议的低代码,真的能火吗?

代码生成器研究

软件测试/人工智能|如何利用ChatGPT帮助我们编写测试用例

霍格沃兹测试开发学社

高阶版本来袭!华为云这款轻量应用服务器“战斗力”更强了

轶天下事

搭建小程序快人一步!轻量应用服务器还得是华为云

轶天下事

成长企业建站难度高阻力大?华为云这款轻量应用服务器“药到病除

轶天下事

性能与成本如何兼顾,企业选择轻量应用云服务器为何推荐华为云?

平平无奇爱好科技

Databend 开源周报第 120 期

Databend

更高更强版本来袭!华为云耀云服务器L实例让小程序开发更高效更安全

轶天下事

打破质疑!华为云这款轻量应用服务器让小程序降本增效

轶天下事

微信小程序开发亏大发了?华为云这款轻量应用服务器轻松躺赚

平平无奇爱好科技

文心一言 VS 讯飞星火 VS chatgpt (139)-- 算法导论11.4 3题

福大大架构师每日一题

福大大架构师每日一题

AI机器学习:突破传统,引领智能科技未来

不在线第一只蜗牛

人工智能 机器学习 AI

学python就能找到高薪工作吗?

代码生成器研究

软件测试/人工智能|测试数据很头疼,ChatGPT帮你造

霍格沃兹测试开发学社

极致好用又安全,华为云耀云服务器L实例让中小成长企业永不宕

轶天下事

苹果推出 SwiftData,持久化框架的技术革新_移动_Sergio De Simone_InfoQ精选文章