如何在发布更新中启用iCloud并迁移Core Data?

时间:2014-01-12 06:31:18

标签: ios core-data icloud

我发布的iPhone应用程序的V1.0使用了核心数据但没有使用iCloud。 现在我想发布支持iCloud的V2.0。

我使用https://github.com/mluisbrown/iCloudCoreDataStack/blob/master/iCloudCoreDataStack/PersistentStack.m作为模板,一切似乎都有效。

因为之前的版本没有iCloud,而新的版本将会出现,我希望在用户第一次打开新版本时将本地副本迁移到iCloud。

我该怎么做?我可以简单地以某种方式将整个sqlite文件从本地复制到iCloud吗?架构在1.0和2.0之间是相同的。

我计划询问用户是否要使用本地Vs. iCloud(根据指南),但如果他们说是,我想以某种方式进行批量复制。

由于

2 个答案:

答案 0 :(得分:0)

您无法批量复制,您必须使用适当的API [NSPersistentStoreCoordinator migratePersistentStore:...][NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL:...]与iCloud选项将商店迁移到iCloud。我试图记录如何执行此操作(但该示例使用UIManagedDocument,尽管用于从iCloud迁移的Core Data API保持不变)。

您不仅需要检查用户首选项,还必须检查他们是否已登录到iCloud。此外,您必须迁移到iCloud,然后如果用户更改首选项,您必须能够迁移回Local。因此,只要应用程序变为活动状态,您就必须检查用户是否更改了设置。这不是那么简单,但是一旦你弄清楚所需的逻辑就不难了。

请参阅以下链接,以获取更详细的说明,示例代码以及显示应用程序正常工作以及在本地和iCloud容器中创建/删除文件的视频:

http://ossh.com.au/design-and-technology/software-development/uimanageddocument-icloud-integration/

请记住,您必须从示例中删除UIManagedDocument特定代码。

答案 1 :(得分:0)

我刚刚发布了一个示例iOS库样式的Core Data应用程序,其中包含iCloud集成。该应用程序包含一个设置包,供用户切换“使用iCloud”首选项设置,并根据用户设置将商店迁移到iCloud或从iCloud迁移。

从下面的链接下载 - 抱歉文档 - 会在某些时候解决这个问题,但它与UIManagedDocument示例的工作方式大致相同。

http://ossh.com.au/design-and-technology/software-development/