我有一个应用程序使用iCloud和核心数据通过NSPersistentCloudKitContainer。容器和相关代码都在一个共享框架中,大多数东西都运行得很好。除了应用本身,我还有一个分享扩展和一个意图扩展。
我遇到的问题是,如果其中一个扩展在应用程序处于活动状态时写入数据库。NSPersistentCloudKitContainer似乎在这两个过程中都发挥了一些魔力,当它发现魔术已经完成时,它无法更新某些数据。例如,我在两个托管对象之间有一对一的关系(这需要与cloudkit支持的模型相反)。关系的一方变为有效,而另一方为零。
我在控制台中收到错误消息,说CloudKit+CoreData无法合并数据库和容器缓存之间的差异。我非常确定这是NSPersistentCloudKitContainer中的一个疏忽,其中没有考虑到这种特定的场景(共享框架,多个开放进程)。
有没有人幸运地使用了NSPersistentCloudKitContainer并保存了来自扩展的关系数据?
发布于 2021-04-24 22:26:33
假设您的SQLite商店文件位于应用程序组container...have中,您是否只尝试在应用程序中使用NSPersistentCloudKitContainer,并在扩展中使用常规NSPersistentContainer?你可以将一个参数传递给你的共享框架类init。您可能需要像云容器一样打开持久跟踪和远程通知,这样当应用程序启动时,CoreData框架可以找到历史记录中的更改,然后将它们导出到CloudKit进行镜像。
这里的基本问题是,如果有两个完整的应用程序(不是app+extension),那么这两个应用程序可以同时使用NSPersistentCloudKitContainer和App Group容器中的一个商店吗?例如,在macOS上或在iPadOS上拆分屏幕。它是否被设计为一次只能从一个应用程序同步?我会看看我是否能弄清楚并更新我的答案。
https://stackoverflow.com/questions/62264170
复制相似问题