【问题标题】:Questions concerning iCloud + core data关于iCloud+核心数据的问题
【发布时间】:2012-04-15 02:32:09
【问题描述】:

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

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

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

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

即使从所有设备上删除应用程序并从头开始也无法解决问题。我最终会遇到数据要么只同步到一台设备,要么根本不同步的情况。

我想知道当只有一台设备暂时禁用 iCloud 或从一台设备删除应用程序时创建的这种不一致状态,我能做些什么吗?

至于我的代码,它是苹果食谱示例的 1:1 副本。

【问题讨论】:

  • 您可以在 Apple 的 Dev 论坛上查看 iCloud 主题 - 它有几十个页面,人们遇到了类似的问题。有些人甚至设法解决了这些问题——devforums.apple.com/thread/126670?tstart=0,但社区中仍然有一种感觉,即 iCloud 还没有准备好投入生产。或者2个月前我还没有准备好。
  • 感谢您的信息。我去论坛看看。

标签: ios core-data ios5 synchronization icloud


【解决方案1】:

Apple 让这看起来很简单,但在正确向 iCloud 植入数据方面存在许多细微差别,以及在不同设备上打开和关闭 iCloud 支持时会发生什么。

我实现了一个示例项目,该项目演示了一种将 iCloud 支持添加到库风格的 CoreData 应用程序的简单方法。它叫做iCloudStoreManager and it's available on github

在将 iCloud 支持添加到我自己的生产应用程序之一之前,我仍在测试它。它可以工作,但是当 iPad 3 混合使用时,我看到了意外的错误和延迟。它有效,但延迟时间很长。

我还用 iPhone 4、iPhone 4S 和第一代 iPad 进行了测试,根据我的经验,这些设备的任何组合都运行良好。

【讨论】:

  • 已经在开发者论坛上找到了您的课程,并尝试在我的项目中使用它。您的框架中是否有任何代码可以处理 iCloud 的不可用性? (在系统设置中关闭 iCloud 存储或在模拟器中运行)
  • 我添加了您的代码,虽然它似乎可以工作(尚无法验证),但我从一开始就得到了这个:NSUbiquitousKeyValueStore 错误:com.myCompany.myAppName 没有有效的 com.apple。 developer.ubiquity-kvstore-identifier 权利。那有什么问题?当我在没有您的代码的情况下设置 icloud 存储时(例如在食谱示例代码中),我没有收到此消息。
【解决方案2】:

Daniel Pasco 在 2012 年 NSConference 上谈到了 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,这可能会也可能不会解决您的问题。

【讨论】:

  • 食谱应用程序至少似乎不会随着丹尼尔斯的变化而崩溃。虽然单个对象仍然可能会卡住,但在所有折磨之后,整体同步似乎正在发挥作用。仍然无法将其移植到我的应用程序中(当我尝试打开/关闭 icloud 同步时,他的课程不断崩溃)。
猜你喜欢
  • 2014-07-24
  • 1970-01-01
  • 2018-01-08
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多