将核心数据同步到 CloudKit 公共数据库

Lor*_*ngo 2 core-data swift cloudkit

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

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

Bas*_*per 7

现在可以通过新的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
Run Code Online (Sandbox Code Playgroud)

视频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
}
Run Code Online (Sandbox Code Playgroud)