我在app商店有一个应用程序,它使用coredata作为存储。我不想用iCloud同步作为新功能更新应用程序。根据Apple的示例代码,我设法让我的核心数据存储在设备之间同步。
但是,当只在其中一台设备上的应用中关闭/打开iCloud同步时,或者从设备中删除应用并重新安装时,我遇到了问题。在这两种情况下,数据都不会同步回设备,尽管它可以在第二台设备上使用(没有禁用/重新安装)。
我还发现,当我从所有设备上删除应用程序,然后重新安装时,所有存储都会被完全删除。通过我在控制台中得到几个合并通知(甚至一些没有错误),我在设备的本地存储中看不到任何数据。
浏览我的Mac上的移动文档文件夹仍会在我的应用程序的icloud存储中显示大量的事务日志。
即使从所有设备上删除应用程序并从头开始也不会解决问题。我最终会遇到数据只是同步到一个设备,或者根本没有同步的情况。
我想知道,如果只有一个设备暂时禁用了iCloud,或者从一个设备上删除了应用程序,那么我可以对这个不一致的状态做些什么吗?
至于我的代码,它是来自apple的收件人示例的1:1副本。
答案 0 :(得分:2)
Daniel Pasco在NSConference 2012上谈到了using Core Data and iCloud together。该博客文章的一些注释:
使用-com.apple.coredata.ubiquity.logLevel 3启动,在消息日志中获取有关Core Data和iCloud正在执行操作的垃圾邮件。
这次谈话的结论似乎是在现阶段使用Core Data和iCloud并没有为彼此做好准备。
他发布了updated Core Data Recipes project on Github,可能会或可能不会解决您的问题。
答案 1 :(得分:1)
Apple让它看起来很简单,但是在正确播种iCloud数据方面存在一些细微差别,以及之后在不同设备上打开和关闭iCloud支持时会发生什么。
我实现了一个示例项目,演示了向库式CoreData应用程序添加iCloud支持的简单方法。它被称为iCloudStoreManager and it's available on github。
在我将iCloud支持添加到我自己的一个制作应用之前,我还在测试它。它正在工作,但是我发现当iPad 3处于混合状态时出现意外错误和延迟。它有效,但延误很长。
我还测试了iPhone 4,iPhone 4S和原装iPad,这些设备的任何组合在我的体验中都很有效。