我发布的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(根据指南),但如果他们说是,我想以某种方式进行批量复制。
由于
答案 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/