核心数据,iCloud和股票对象

时间:2011-12-24 07:41:11

标签: core-data nsmanagedobjectcontext icloud merging-data

我正在更新本地Core Data驱动的应用以支持iCloud。我预计的一个挑战是我称之为“库存对象” - 应用程序在首次启动时提供的种子数据,99%的用户将自定义。

股票对象

Item A
Item B

自定义对象

Tomatoes
Potatoes

如果用户第一次在新设备上启动应用程序,我认为默认行为是重新创建将与iCloud持久存储中的自定义对象合并的库存对象(Item A,项目B,西红柿,土豆),导致用户体验混乱。

一种方法可能是在首次启动时同步检查iCloud数据,如果存在,则不创建库存对象。但是,用户可能在首次启动时处于脱机状态,然后在第二次启动时,本地库存对象与iCloud自定义对象的相同不合需要的合并将会发生。

有没有办法为iCloud合并添加逻辑,以便来自云(西红柿和土豆)的自定义对象的到达可以指示我在它们被传送之前删除本地库存对象(项目A和项目B)? / p>

谢谢!

2 个答案:

答案 0 :(得分:0)

为什么不通过不提供种子对象来避免这种情况?只需提示用户通过UI在首次启动时输入自己的对象。问一下,如果她之前使用过该应用程序,并说明在重新创建对象之前等待从iCloud同步可能会付出代价。

答案 1 :(得分:0)

我不确定这是否是最好的方法,但这就是我正在做的事情:

  1. 当用户选择启用iCloud时,我会检查他们的iCloud目录是否为空。
  2. 如果是这样,没问题;我将数据库迁移到启用了iCloud选项的新本地存储,以便将所有现有数据移至云端。
  3. 如果没有,我检查本地数据库是否为空。如果是,我会清除所有库存对象并从云中获取所有内容。如果不是,我告诉用户当前应用程序无法将本地数据库与iCloud数据库合并,并要求他们删除他们的数据(或重新安装),从而避免这个问题。