限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

苹果推出 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:009695

评论

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

葵花药业集团与用友战略签约,共启医药行业数智化新篇章

用友BIP

局域网聊天工具,哪款更适合政企的即时通讯需求?

BeeWorks

即时通讯 IM 私有化部署 局域网

1688 商品数据接口终极指南:Python 开发者如何高效获取标题 / 价格 / 销量数据(附调试工具推荐)

tbapi

1688商品列表接口 1688API 1688商品数据采集

WebGL软件开发的技术方案

北京木奇移动技术有限公司

软件外包公司 webgl开发 webgl技术

区块链RWA系统开发框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

【AI智能助手】轻松打造智能助手,定制专属个性风格

JEECG低代码

AI大模型 AI应用 AIGC AI智能助手

Blender 入门教程(四):动画制作

北桥苏

游戏引擎 blender CocosCreator

网站进行IPv6改造的步骤有哪些?一文看懂

国科云

特权账号:企业安全的关键要素与防护策略

天翼云开发者社区

安全 特权账号

让用户反馈成为产品迭代的动力源泉

Feedalyze

效率工具 产品经理 产品迭代 用户反馈 用户需求

CST如何生成简单通用的IBIS模型文件

思茂信息

cst CST软件 CST Studio Suite

中国电信重塑天翼AI云手机,为用户开启云端智能新生活

极客天地

5月23日开课!“北大-用友CIO/CDO数智化进阶课程”

用友BIP

深化合作!港华集团数智升级,构建一体化管控平台

用友BIP

区块链ETF软件系统的技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链ETF

区块链RWA软件系统技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎

华为云开发者联盟

微服务 华为云开发者联盟 MCP 华为云CSE

什么是零信任

天翼云开发者社区

零信任 SDP架构

办公网络流量隔离:为高效办公保驾护航

天翼云开发者社区

安全 网络

“全球金牌敏捷课程” · 7月19-20日CSM认证课程 · Jim老师引导讨论AI & Agility话题

ShineScrum

敏捷 敏捷教练 CSM认证 CSM认证培训 敏捷认证

0.4元/TB/月!天翼云HBlock打响软件定义存储价格战

天翼云开发者社区

存储 天翼云HBlock

针对大事务问题对业务存储过程改造

GreatSQL

WebGIS项目开发技术方案

北京木奇移动技术有限公司

软件外包公司 webGIS开发 webgl开发公司

AI大模型入门 三:5分钟速成Prompt公式,让AI生成代码的通过率从30%到90%

测试人

人工智能

TiDB 替换 HBase 全场景实践指南 ——从架构革新到业务赋能

TiDB 社区干货传送门

TiDB第四届征文-业务场景实战

TiDB 中新 Hash Join 的设计与性能优化

TiDB 社区干货传送门

内网im聊天软件,私有化部署安全可控

BeeWorks

即时通讯 IM 私有化部署

向日葵、ToDesk、网易UU远程、RayLink,哪款远控软件最适合设计师?

科技热闻

1688API接口终极宝典:列表、详情全掌握,图片搜索攻略助你一臂之力

tbapi

1688商品详情接口 1688商品数据接口 1688API 1688图片搜索接口

用户实测YRCloudFile KVCache丨以存代算显著提升AI推理性价比

焱融科技

AI推理 大型语言模型LLM KVCache

“最近我给有代码洁癖的同事墙裂安利了通义灵码”

阿里巴巴云原生

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