用途:这是实现 iCloud Drive 文件同步的参考资料,面向需要跨设备同步用户文件、构建文档型应用(如 Pages、Numbers 类)或集成文档选择器的场景。它强调 iCloud Drive 用于“基于文件的同步”,而非结构化数据;若需可查询的结构化数据或记录间关系应改用 CloudKit,少量键值偏好则用 NSUbiquitousKeyValueStore。
主要能力:通过 FileManager.default.url(forUbiquityContainerIdentifier:) 获取容器 URL,并区分 Documents(用户可见)与 Library(隐藏)结构;使用 NSFileCoordinator 进行协调读、协调写与协调移动,避免同步竞态、数据损坏与更新丢失;通过 URL 资源值检查 .isUbiquitousItemKey、下载状态、上传状态与未解决冲突标志;用 startDownloadingUbiquitousItem(at:) 请求下载,并用 NSMetadataQuery 监控进度;用 NSFileVersion 检测与解决冲突(保留当前版本、选择其他版本或手动合并);用 NSUbiquitousKeyValueStore 同步小偏好并监听外部变更通知。
使用方式:需在 entitlements 中配置 iCloud 能力(CloudDocuments)、ubiquity-container-identifiers,以及可选的 ubiquity-kvstore-identifier。文档中示例代码已给出,可按需参考,但所有访问 iCloud 文件的操作都应经过 NSFileCoordinator。
适用场景:文档型 iCloud 同步、跨设备文件同步、跨进程文件访问协调、iCloud 文件冲突处理、偏好同步。
限制:NSUbiquitousKeyValueStore 总量 1 MB、最多 1024 个键、单值最大 1 MB,仅用于偏好而非数据;获取容器 URL 在未登录或未配置 entitlement 时返回 nil;下载为异步需借 NSMetadataQuery 监控;冲突需应用自行决定保留或合并策略。具体定价、平台细节与更多使用步骤资料未提供。