写点什么

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

评论

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

IDC《中国网络安全软件技术发展路线图,2024》报告身份管理&移动安全推荐厂商

芯盾时代

身份安全 移动安全

止步阿里一面。。。

王中阳Go

Go 面试 后端

免费办公室文档管理软件有哪些?精选9大软件

爱吃小舅的鱼

文档管理软件

Lightroom Classic 2021 for mac(LRC 2021中文直装版)

Mac相关知识分享

Mac苹果电脑微信多开助手,拥有防撤回和微信多开的功能

你的猪会飞吗

微信多开和防撤回工具 微信多开助手 mac微信多开

数字卫星:「超实时仿真」实现处理器性能5倍提升

DevOps和数字孪生

数字孪生

想给MAC电脑换个壁纸?苹果电脑各类高清壁纸资源分享

Rose

初识VPC网络的能力

天翼云开发者社区

云计算 网络安全 VPC

10分钟使用豆包MarsCode 帮我搭建一套后台管理系统

豆包MarsCode

人工智能 程序员 AI

文档管理系统怎么选?2024推荐的8款工具

爱吃小舅的鱼

文档管理系统

如何选择合适的文档管理系统?8个方案对比

爱吃小舅的鱼

文档管理工具

互联网大厂Java高频面试题整理(2024最新含答案)

架构师之道

Java 面试

Typora for Mac(Markdown文本编辑器)中文版

Mac相关知识分享

Mac软件

“DataOps+大模型”——数造科技在大模型时代的数据开发创新探索

数造万象

人工智能 AI DataOps 大模型 #SQL

人工智能的发展趋势

天津汇柏科技有限公司

人工智能

数据结构 - 栈

EquatorCoco

数据结构

MT7915 in Action: Driving Seamless Wireless Solutions

wallyslilly

MT7915

进程,线程,协程 - 你了解多少?

蛋先生DX

线程 操作系统 进程 协程 上下文

解析淘宝商品评论API返回值中的评价热度与关注度

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

IPQ4019 vs. IPQ5018-Comprehensive Comparison of WiFi Solutions

wifi6-yiyi

wifi wifi5

企业如何确保文档安全?9款非云端文档管理工具助力

爱吃小舅的鱼

文档管理工具

律师必备的文档管理工具有哪些?10个推荐

爱吃小舅的鱼

文档管理工具

HyperMesh基础教程:概述与有限元分析简介

智造软件

建模 仿真软件 Hypermesh 有限元技术 网格划分

VMware Fusion Pro 13 for Mac(VM虚拟机软件)

Mac相关知识分享

6个最佳核心应用仪表盘构建工具

NocoBase

数据挖掘 数据分析 数据可视化 仪表盘

从Naive RAG到Agentic RAG:基于Milvus构建Agentic RAG

Zilliz

AI Milvus Zilliz 向量数据库 rag

学习CST入门教程的好去处:CST基础与中文教程资源

思茂信息

初学者 cst操作

如何评估文档管理工具?10款软件对比指南

爱吃小舅的鱼

文档管理工具

1024大赛来袭,工业智能体开发等你来挑战!

Openlab_cosmoplat

人工智能

4K Video Downloader Plus Pro v1.9.2激活版 专业版在线视频下载器

iMac小白

After Effects 2020 for Mac(ae 2020 中文直装版)

Mac相关知识分享

AE2020 中文版

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