首页 > 解决方案 > 将核心数据同步到 CloudKit 公共数据库

问题描述

在以下链接中,有一个项目的源代码,它允许您在相同的用户设备之间同步核心数据。数据存储在用户私有数据库中......有没有办法在公共 CloudKit 数据库中同步来自 CoreData 的数据,以便所有应用程序用户之间的应用程序都相同?为什么 NSPersistentCloudKitContainer 不允许你设置这个?

https://developer.apple.com/documentation/coredata/synchronizing_a_local_store_to_the_cloud

标签: swiftcore-datacloudkit

解决方案


这现在可以通过新的databaseScope属性在 iOS 14.0+ Beta 和 macOS 11.0+ Beta 中实现:https ://developer.apple.com/documentation/coredata/nspersistentcloudkitcontaineroptions/3580372-databasescope

可能的值是.public(公共数据库)、.private(私有数据库)和.shared(共享数据库)。

例如:

let container = NSPersistentCloudKitContainer(name: "test")
guard let description = container.persistentStoreDescriptions.first else {
    fatalError("Error")
}
description.cloudKitContainerOptions?.databaseScope = .public

视频https://developer.apple.com/videos/play/wwdc2020/10650描述了如何通过将 databaseScope 值设置为将 Core Data 存储与 CloudKit 公共数据库同步.public.

您可能还需要#available检查以确保向后兼容性,即:

if #available(iOS 14.0, *) {
    description.cloudKitContainerOptions?.databaseScope = .public
} else {
    // Fallback on earlier versions
}

推荐阅读