2012-03-31 138 views
3

我在应用程序商店中有一个应用程序,它使用coredata作为存储。我不想将iCloud同步作为新功能更新应用程序。遵循苹果的示例代码,我设法让我的核心数据存储在设备之间同步。关于iCloud +核心数据的问题

但是,当iCloud同步在其中一个设备上的应用程序中关闭/打开时,或者应用程序从设备中删除并重新安装时遇到问题。在这两种情况下,数据都不会同步回设备,尽管第二台设备(没有禁用/重新安装)可以正常使用。

我还发现,当我从所有设备上删除应用程序,然后重新安装时,所有存储都被完全删除。通过我在控制台中得到了几个合并通知(甚至有些没有错误),我在设备的本地存储中看不到任何数据。

浏览我的mac上的移动文档文件夹仍然会在我的应用程序的icloud存储中显示大量事务日志。

即使从所有设备删除应用程序,并从头开始不会解决问题。最终会导致数据只能同步到一台设备,或者根本不同步。

我不知道是否有什么我可以做的关于这种不一致的状态,当只有一个设备被临时禁用iCloud时创建,或者该应用程序从一个设备中删除?

至于我的代码,它是来自apple的收件人示例的1:1副本。

+1

你可以通过苹果开发论坛上的iCloud主题来看看 - 它有几十页,遇到类似问题的人。有些人甚至设法解决它们 - https://devforums.apple.com/thread/126670?tstart=0但社区仍然有一种感觉,即iCloud尚未准备好投入生产。或者2个月前,当我深入其中时,还没有准备好。 – 2012-04-01 06:28:39

+0

感谢您的信息。我会看看论坛。 – user826955 2012-04-01 10:11:41

回答

2

Daniel Pasco谈到using Core Data and iCloud together在NSConference 2012年从博客中的一些注意事项:

launching with -com.apple.coredata.ubiquity.logLevel 3 to get a spamfest in the message log saying what Core Data and iCloud are doing.

The conclusion from this talk appears to be that using Core Data and iCloud are really not ready for each other at this stage.

他发布了一个updated Core Data Recipes project on Github这可能会或可能不会解决您的问题。

+1

食谱应用程序至少似乎与丹尼尔斯变化牢不可破。虽然单个对象仍可能卡住,但整体同步似乎在所有折磨后都起作用。仍然有问题将其移植到我的应用程序,虽然(他尝试打开/关闭icloud同步时,他的课程不断崩溃)。 – user826955 2012-04-02 19:37:35

1

苹果让它看起来很容易,但在正确地将数据与iCloud一起播种方面存在一些细微差别,以及当后续在不同设备上打开和关闭iCloud支持时会发生什么情况。

我实现了一个示例项目,演示了向库风格的CoreData应用程序添加iCloud支持的直接方式。它被称为iCloudStoreManager and it's available on github

在我将iCloud支持添加到我自己的生产应用程序之前,我仍在测试它。它正在工作,但是当iPad 3混合使用时,我发现了意想不到的错误和延迟。它的工作原理,但延误很长。

我也测试过iPhone 4,iPhone 4S和原始iPad,而且这些设备的任何组合都能很好地满足我的体验。

+0

已经在开发人员论坛上发现您的课程,并尝试在我的项目中使用它。你的框架中是否有处理iCloud不可用的代码? (iCloud存储在系统设置中关闭或在模拟器中运行) – user826955 2012-04-09 20:19:04

+0

我添加了你的代码,虽然它似乎工作(还不能验证),但我在一开始就得到这个:NSUbiquitousKeyValueStore error:com.myCompany.myAppName没有有效的com.apple.developer.ubiquity-kvstore-identifier权利。那有什么不对?当我在没有代码的情况下设置icloud存储时,我不会收到此消息(如在食谱中 - 示例代码)。 – user826955 2012-04-10 19:09:50