手动迁移iCloud核心数据

时间:2013-02-11 18:12:13

标签: ios core-data upgrade icloud

我有一个应用程序可以读取世界各地的风读数。我决定使用鞋盒式应用程序使用iCloud和Core Data。

风读数每小时更新一次,在使用应用程序几周后,我意识到这是一个坏主意,因为iCloud / Core Data刚刚填满了兆字节的交易,恢复设备需要10分钟才能将商店下载到新鲜设备

我的解决方案是使用核心数据配置,以便“站点”存储在iCloud存储中,但每小时更改的“风读数”在12小时后被删除存储在本地存储中。如果它更容易想象,它的工作方式类似于每小时改变的RSS“网站”和“条目”。

这一切都很好但我无法弄清楚如何为我的应用程序的2.0版本编写迁移代码。在阅读配置如何工作之后,我必须删除站点和风读数之间的父/子关系,并使用获取请求使用公共siteIdentifier UUID链接它们。

这样做我认为我不能使用轻量级迁移?加载版本化的.momd模型文件只是给我最新的模型,所以如何获取原始模型文件以加载商店并手动完成所有操作。

另一方面,这是否太复杂了,我会更好地删除iCloud支持,或者你推荐另一种方式?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您应该可以使用轻量级迁移。

原因是,就您的“iCloud”配置而言,您只是删除实体并删除属性(即删除表和列)。自动迁移可以很好地处理。

...然而

有一个问题。它不会先将您拥有的数据复制到“本地”配置。因此,您需要在迁移之前手动执行此操作。以下是基本步骤:

  1. 确定是否需要进行此迁移。
  2. 将sqlite文件复制到“local.sqlite”。
  3. 站起iCloud配置,这将删除读数。
  4. 站起来配置本地配置,这将删除网站。
  5. 再次测试,测试,测试并继续测试。