写点什么

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

评论

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

产品溯源管理系统(源码+文档+讲解+演示)

深圳亥时科技

这些搜索技巧你不会?

Immerse

《Operating System Concepts》阅读笔记:p449-p459

codists

操作系统

在京东做技术是种什么体验?| 13位零售人告诉你答案

京东零售技术

保姆级离线 TiDB V8+ 解释

TiDB 社区干货传送门

8.x 实践

TiCDC 新架构 v9.0.0 使用实践

TiDB 社区干货传送门

TiCDC新架构

探秘能源行业AI密码:云鼎科技用大模型实现了″四个转变″

Alter

今日最新消息!黑龙江网络安全等级保护备案新规定,速看!

黑龙江陆陆信息测评部

“官方网站+公开课程”双赋能,鸿蒙游戏开发者服务焕新升级

最新动态

龙蜥社区第六届理事大会成功举行,共话技术创新与生态合作

OpenAnolis小助手

开源 龙蜥社区 OpenAnolis 龙蜥社区理事大会

SPC统计过程管理系统(源码+文档+讲解+演示)

深圳亥时科技

电子签借贷真实吗?315报道引发的行业地震!电子签到底冤不冤?

易成研发中心

CST软件如何用天线远场计算Group delay延时

思茂信息

cst CST软件 CST Studio Suite

用 tcpdump 分析 Java 客户端的 prepare 行为

TiDB 社区干货传送门

性能调优 故障排查/诊断

高性能存储SIG月度动态:erofs快照器合入containerd社区,ANCK支持virtio-blk直通

OpenAnolis小助手

操作系统 高性能存储 龙蜥社区 龙蜥社区SIG EROFS

海信洗衣机闪耀AWE:三筒品类开创者亮剑,大咖嘉宾连连盛赞

新消费日报

【2月13日 - 3月14日】TiCDC 新架构试用通道正式开启,全新升级,抢先体验,多重参与奖励等你拿!

TiDB 社区干货传送门

重识 APO:DeepSeek 掀起可观性领域变革 | 龙蜥生态

OpenAnolis小助手

AI 系统运维 apo 龙蜥生态 DeepSeek

GreatSQL 为何选择全表扫描而不选索引

GreatSQL

深入探究小红书笔记详情页面数据采集接口​

tbapi

小红书笔记详情接口 小红书API

数字化转型投入大、见效慢?中小企业该如何应对?

天津汇柏科技有限公司

数字化转型

多智能体强化学习的算力调度创新,让每一份算力都创造广告价值 | 京东零售技术实践

京东零售技术

Karmada v1.13 版本发布!新增应用优先级调度能力

华为云开发者联盟

容器 云原生 集群 Karmada

高性能网络SIG双月动态:加速 SMC eBPF 透明替换特性上游化进程,并与上游深度研讨新特性

OpenAnolis小助手

操作系统 龙蜥社区 smc 龙蜥SIG月报

混合APP开发的特点

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

APP开发 软件外包公司 APP外包公司

电子签高利贷实况解读:央视3·15乌龙曝光,电子签行业替高利贷买单

易成研发中心

重塑家庭观影标准,海信激光电视探索X1斩获艾普兰奖

新消费日报

使用DataWorks Notebook实现智能图片标注,给你的图片加个“注释”

阿里云大数据AI技术

大数据 数据分析 ETL 多模态 Dataworks

【宣法·3.15特辑】电子签怎么跟套路贷混为一谈了?

易成研发中心

电子签名

5步教你创建大模型自定义插件

阿里技术

大模型 自定义插件 LLM

《汽车电机MES系统实战指南:打造柔性化智能产线的4大核心模块与3项关键技术突破》​

万界星空科技

mes 制造业工厂 电机MES 汽车电机 汽车电机mes

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