【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

评论

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

Java 文件处理完全指南:创建、读取、写入和删除文件详细解析

小万哥

Java 程序人生 编程语言 软件工程 后端开发

PHP基本语法解析与应用指南

百度搜索:蓝易云

php html 云计算 Linux 运维

科普:嵌入式多核并行仿真

DevOps和数字孪生

仿真建模 多核并行仿真

crawlab通过docker单节点部署简单爬虫

百度搜索:蓝易云

Java php Go golang Linux

2023 re:Invent 使用 PartyRock 和 Amazon Bedrock 安全高效构建 AI 应用程序

亚马逊云科技 (Amazon Web Services)

生成式人工智能

招个Java工程师,却发现了一个宝藏平台

王磊

Java 面试

低代码助力企业数据资产价值升级

Crabc低代码平台

低代码 数字化 数据服务

AI技术在医疗领域中有哪些改变?

小魏写代码

如何使用Python去除文件后缀名?

霍格沃兹测试开发学社

雷龙科技Nand flash芯片试用体验

智趣匠

存储 芯片 Flash

Github 每日热榜 2024.03.18

天马行空的大杂烩

程序员 开源软件 最新软件

git rebase和merge区别

百度搜索:蓝易云

git Linux 运维 Rebase merge

Python教程:如何获取颜色的RGB值

霍格沃兹测试开发学社

从海外开发者大会的亲身体悟聊起,谈谈 AI 与开发者关系的重构 | 编码人声

声网

牛市下 AI + Web3 叙事引关注,Verasity 或成又一黑马项目?

股市老人

美国科技行业今年裁员超 5 万人;宁德时代一年净赚超 440 亿丨 RTE 开发者日报 Vol.167

声网

arthas火焰图(async-profiler)在云交易中的运用

京东零售技术

后端 效能提升

基于SkyEye仿真6678处理器:实现国产操作系统ReWorks仿真运行

DevOps和数字孪生

国产操作系统ReWorks SkyEye

Transformer大模型学习导引:光速掌握大模型

鲸品堂

大模型 企业号 3 月 PK 榜

Python实现:教你轻松统计文件夹下文件个数

霍格沃兹测试开发学社

被 AI 写的游戏代码砸中是什么感觉 | 10 分钟打造你的超级 AI 编码助手

阿里巴巴云原生

阿里云 云原生 通义灵码

CentOS下查看ssd寿命

百度搜索:蓝易云

centos 运维 SSD 云服务器 smartmontools

《Java核心技术·卷 I(原书第11版)》PDF

程序员李木子

深度解析大模型:概念、架构与应用价值

木南曌

AI 大模型

[人脸修复]基于CodeFormer的人脸修复模型配置

alexgaoyh

环境配置 CodeFormer 人脸修复 人脸复原 旧照片修复

探秘服务器云托管的优势与特点,助你选择最佳方案

一只扑棱蛾子

ChatGPT教程:使用资源聚合盘点—入门、GPT工具、AI工具

蓉蓉

openai ChatGPT GPT-4

What’s new in Apache/dubbo-getty 1.4.10

apache/dubbo-go

Sora给你带来的真实变化

脑极体

AI

牛刀专业低代码开发实战—配件出入库管理

牛刀专业低代码

低代码开发 低代码平台 牛刀低代码 牛刀专业低代码

Java+Github+Jenkins部署

百度搜索:蓝易云

golang GitHub Linux 运维 jenkins

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