SuperAPI AI 工具集

cloudkit

通用与其它

查看项目

更新于 10-16 06:21

技能介绍

用途:在 iOS/macOS 应用中实现、审查或改进 CloudKit 与 iCloud 同步,涵盖容器设置、记录 CRUD、查询、订阅、CKSyncEngine、SwiftData 集成、冲突解决与错误处理。目标为 iOS 26+ 与 Swift 6.3,旧版本可用性另有说明。

主要能力:容器提供 Public、Private、Shared 三类数据库,分别对应不同作用域与配额;CKRecord 为键值对,单条记录上限 1 MB(不含 CKAsset 数据),支持自定义记录区以实现原子提交、变更跟踪与共享;CKQuery 使用 NSPredicate,支持 ==、!=、<、>、BEGINSWITH、CONTAINS、IN、AND、NOT、BETWEEN 及距离查询;CKSubscription 在服务端记录变化时触发推送,CloudKit 自动启用 APNs;CKSyncEngine(iOS 17+)为推荐同步方案,自动处理调度、瞬时错误重试、变更令牌与推送,仅适用于私有与共享数据库;SwiftData 通过 ModelConfiguration 支持 CloudKit 同步;NSUbiquitousKeyValueStore 提供简单键值同步,上限 1024 键、总计 1 MB、单值 1 MB;iCloud Drive 使用 FileManager 与 NSMetadataQuery 做文档级同步。

必要用法:启用 iCloud + CloudKit 能力后,用 CKContainer.default() 或指定标识符获取容器与数据库;保存前先检查 accountStatus(),处理 .noAccount 等状态;CKSyncEngine 需持久化 stateSerialization 以从正确变更令牌恢复;冲突时 CloudKit 返回 .serverRecordChanged,应使用 ancestor、client、server 三方合并并写入 serverRecord;限流错误按 retryAfterSeconds 重试;变更令牌需落盘,changeTokenExpired 时重置并重新拉取;SwiftData 模型须用可选属性、避免唯一约束、大文件用 @Attribute(.externalStorage)。

适用场景与限制:适用于需要跨设备同步用户数据的应用;公共数据库仅适合应用级共享内容,用户个人数据应放私有数据库;不要轮询,应使用订阅或 CKSyncEngine;不要假设保存后数据立即可用;敏感数据应使用 CKRecord 的 encryptedValues。文档还包含常见错误与审查清单,以及 CKFetchRecordZoneChangesOperation、CKShare、CKAsset、批量操作与 CloudKit Dashboard 的参考说明。