swift - 将核心数据同步到 CloudKit 公共数据库
问题描述
在以下链接中,有一个项目的源代码,它允许您在相同的用户设备之间同步核心数据。数据存储在用户私有数据库中......有没有办法在公共 CloudKit 数据库中同步来自 CoreData 的数据,以便所有应用程序用户之间的应用程序都相同?为什么 NSPersistentCloudKitContainer 不允许你设置这个?
https://developer.apple.com/documentation/coredata/synchronizing_a_local_store_to_the_cloud
解决方案
这现在可以通过新的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
}
推荐阅读
- android - 将鼠标悬停在 Android Studio 中的代码完成选项上时如何查看方法文档?
- swift - 在导航控制器中测试 topviewcontroller
- java - 如何使用 Selenium 和 Java 从 html 中提取文本 2?
- c# - 如何向新添加的连接器添加标签以及如何获取 beginItem 标签和 EndItem 标签?
- python - 在 /admin/login/ 出现 OperationalError 错误没有这样的表:auth_user
- c# - 在 ASP.NET Core 中正确实现 NRT
- google-apps-script - 更改发件人姓名从电子表格创建日历邀请
- assembly - 如何在装配中进行十六进制偏移计算
- c++ - 为什么添加两个值在运行时会有如此高的可变性?
- c++ - 树的节点之间的最大距离中的运行时错误