如何在发布更新时启用 iCloud 并迁移 Core Data?
Posted
技术标签:
【中文标题】如何在发布更新时启用 iCloud 并迁移 Core Data?【英文标题】:How do I enable iCloud and migrate Core Data on a release update? 【发布时间】:2014-01-12 06:31:18 【问题描述】:我有一个使用 Core Data 但没有 iCloud 的 iPhone 应用程序的已发布 V1.0。 现在我想发布支持 iCloud 的 V2.0。
我使用https://github.com/mluisbrown/iCloudCoreDataStack/blob/master/iCloudCoreDataStack/PersistentStack.m 作为模板,一切似乎都正常。
因为之前的版本没有iCloud,新的有,所以我想在用户第一次打开新版本的时候将本地副本迁移到iCloud。
我该怎么做?我可以简单地将整个 sqlite 文件从本地复制到 iCloud 吗?架构在 1.0 和 2.0 之间是相同的。
我打算询问用户是否要使用本地 Vs。 iCloud(根据指南),但如果他们说是,我只想以某种方式进行批量复制。
谢谢
【问题讨论】:
【参考方案1】:我刚刚发布了一个包含 iCloud 集成的示例 ios 库风格的 Core Data 应用程序。该应用程序包含一个设置包,供用户切换“使用 iCloud”首选项设置,并将根据用户设置将商店迁移到 iCloud 和从 iCloud 迁移。
从下面的链接下载 - 对文档感到抱歉 - 会在某个时候解决这个问题,但它的工作方式与 UIManagedDocument 示例大致相同。
http://ossh.com.au/design-and-technology/software-development/
【讨论】:
我需要时间来分析代码,但这个例子看起来正是我想要的。非常感谢【参考方案2】:您不能批量复制,您必须使用适当的 API [NSPersistentStoreCoordinator migratePersistentStore:...]
和 [NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL:...]
以及 iCloud 选项将商店迁移到 iCloud。我已尝试记录如何执行此操作(但示例使用 UIManagedDocument,尽管用于迁移到 iCloud 和从 iCloud 迁移的核心数据 API 保持不变)。
您不仅要检查用户偏好,还必须检查他们是否登录到 iCloud。此外,您必须迁移到 iCloud,然后如果用户更改首选项,您必须能够迁移回本地。因此,您必须在应用程序激活时检查用户是否更改了设置。这不是那么简单,但一旦你弄清楚所需的逻辑,它就不难了。
请参阅下面的链接以获取更详细的说明、示例代码和显示应用程序运行以及在本地和 iCloud 容器中创建/删除文件的视频:
http://ossh.com.au/design-and-technology/software-development/uimanageddocument-icloud-integration/
请记住,您必须从示例中删除 UIManagedDocument
特定代码。
【讨论】:
以上是关于如何在发布更新时启用 iCloud 并迁移 Core Data?的主要内容,如果未能解决你的问题,请参考以下文章