HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论

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

初步了解Istio

穿过生命散发芬芳

istio 12月月更

职场沟通术语

J.Smile

沟通技巧

Linux apt 命令

梦笔生花

linux 文件权限控制

小游戏与h5游戏开发技术分析

Onegun

小游戏 小程序游戏 H5小游戏

30个编程小技巧,提高代码性能

千锋IT教育

华为云大数据BI赋能企业数字化发展

秃头也爱科技

从SPL看开放计算能力的意义

石臻臻的杂货铺

SPL

盘点JDK中基于CAS实现的原子类

JAVA旭阳

Java Java并发

小游戏开发游戏引擎指南

Onegun

小游戏 小游戏开发 小程序游戏

华为云CDN多场景加速,“火速”留住用户

秃头也爱科技

FFA 2022 收官总结|活动报告出炉,实时即未来!

Apache Flink

大数据 flink 实时计算

架构实战营第十期模块一作业

Geek_4db2d5

华为云大数据解决方案赋能金融行业发展,打造5G智慧银行营业厅

路过的憨憨

低成本、高效率!华为云桌面助力企业数字化转型

IT科技苏辞

架构实战营模块7作业

冷夫冲

架构设计 #架构实战营

海鑫科金:通过 YMatrix 实现离线在线平台统一,满足公安数据场景的管理分析需求

YMatrix 超融合数据库

超融合数据库 YMatrix 公安数据场景 海鑫科金

流畅高清,华为云桌面Workspace助力设计师高效办公!

秃头也爱科技

微服务开发平台 Spring Cloud Blade 部署实践

北京好雨科技有限公司

Kubernetes 微服务 云原生 Spring Cloud

福利Day | KaiwuDB 邀你相约 DTCC 2022,文末免费抢价值3200元大会门票!

KaiwuDB

数据库

Smart Finance将AIGC引入GameFi,P2E进入人工智能时代

股市老人

Smart Finance将AIGC引入GameFi,P2E进入人工智能时代

鳄鱼视界

前端食堂技术周刊第 62 期:11 月登陆浏览器的新特性、VueConf 2022、第 93 次 TC39 会议、TS 挑战

童欧巴

CSS JavaScript

找运营商电商化运营突破口的九个策谋

鲸品堂

12 月 PK 榜

cleanmymac有用吗?2023最新版本值不值得下载

茶色酒

CleanMyMac CleanMyMac X CleanMyMac X2023

2022-12-06:定义一个概念叫“变序最大和“ “变序最大和“是说一个数组中,每个值都可以减小或者不变, 在必须把整体变成严格升序的情况下,得到的最大累加和 比如,[1,100,7]变成[1,6,

福大大架构师每日一题

算法 rust 福大大

与Web3支付赛道主要项目相比,Zebec生态潜力相当大

BlockChain先知

极客时间架构实战营第10期模块1作业

刘博

架构

龙磐投资,中国领先生物医药风险投资机构,规模超百亿

联营汇聚

go基于泛型的FUNCTIONAL OPTIONS

Z.K

拒绝等待,华为云CDN下载加速就是要快人一步

路过的憨憨

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