字节笔记本
2026年2月21日
SwiftData 与 iCloud 同步完全指南
SwiftData 内置了对使用 CloudKit 进行 iCloud 同步的支持。它的使用非常简单,在某些情况下甚至不需要编写任何代码,但它不支持公共数据库或共享数据库。
重要提示
如果你需要使用公共或共享数据库,你需要使用 NSPersistentCloudKitContainer,可以单独使用,也可以与 SwiftData 共存。
配置 iCloud 同步
如果你想将应用数据同步到 iCloud,请按照以下步骤操作:
- 打开应用目标的 Signing & Capabilities 设置
- 添加 iCloud 功能
- 在选项中选择 CloudKit
- 点击 + 按钮添加新的 CloudKit 容器,或选择现有的容器
- 添加 Background Modes 功能
- 勾选 "Remote Notifications" 选项
完成以上配置后,你的应用就已经设置为将所有数据与 iCloud 同步了。
测试建议
虽然你可以在模拟器中测试 iCloud 支持,但我发现它很少能正常工作,最好在真实设备上进行测试。
CloudKit 模型要求
虽然配置已经完成,但你可能需要对 SwiftData 模型进行一些更改,因为 CloudKit 有一些非常具体的要求。需要注意的是,如果不遵循这些要求,iCloud 同步将会静默失败:
- 不能使用唯一属性:不能在任何要同步到 CloudKit 的属性上使用
@Attribute(.unique) - 默认值或可选属性:所有属性必须具有默认值或在初始化器中标记为可选
- 关系必须可选:所有关系必须标记为可选
只要对所有模型进行这些更改,它们就会自动同步到 CloudKit。如果用户稍后从设备中删除应用然后重新安装,SwiftData 会自动从 iCloud 获取他们的旧数据并同步到本地。
CloudKit Dashboard
在使用 CloudKit 时,你可能会发现 Apple 的 CloudKit Dashboard 是一个有用的资源,可以查看 CloudKit 如何存储你的数据。你可以在这里访问:https://icloud.developer.apple.com/dashboard
总结
SwiftData 的 iCloud 同步功能让数据持久化和跨设备同步变得异常简单。只需在项目中进行简单的功能配置,无需编写额外的同步代码,你的应用数据就能自动同步到用户的所有设备上。
在 AI 技术快速迭代的今天,保持持续学习的能力比掌握任何特定的技术都更重要。理解底层原理可以帮助你在遇到新技术时更快地上手,可以在不同的技术方案之间做出更明智的选择。建议开发者建立自己的技术框架,而不是追逐每一个新的工具和框架。实践是最好的学习方式,在真实项目中应用新学到的技术,遇到问题并解决,这种经历比任何教程都更有价值。定期整理和复盘也是很好的习惯。将学到的知识归档整理,形成自己的知识库。当需要用到某个技术时,可以直接从自己的知识库中找到相关的参考,而不是从零开始搜索。
技术的价值不在于它有多前沿,而在于它能在多大程度上解决实际问题。AI 技术的快速迭代不是用来追赶的潮流,而是用来解决业务痛点的工具箱。在实际应用中,有时候简单的方案反而最有效。一个 RAG 系统用了最复杂的检索策略但文档处理没做好,效果不如一个文档处理完善但检索策略简单的系统。一个 Agent 系统用了最贵的模型但 prompt 设计粗糙,效果不如一个精心设计 prompt 的普通模型。建议在追求技术先进性之前,先把基础工作做扎实。文档清洗、数据标注、评测体系、监控告警,这些看似基础的工作,往往是决定 AI 项目成败的关键。