CoreData到CloudKit迁移

时间:2017-05-25 04:21:59

标签: ios core-data cloudkit

从CoreData迁移到CloudKit并保留所有用户数据的最佳方法是什么?

我想退出Core-Data并将其替换为CloudKit,但是用户拥有大量重要数据,应该以某种方式进行迁移。 许多类正在使用CoreData实体,它们不应受到影响(CRUD操作除外)。 没有找到任何直截了当的指导原则。

我的解决方案草案:

- 检查用户是否具有CoreData

- 加载内存中的所有CoreData对象

- 将它们写入云端

- 删除CoreData文件

它能够按预期工作吗?

在删除Core-Data后,可以使用从NSManagedObject继承的类吗? 它会引起任何副作用吗?

2 个答案:

答案 0 :(得分:3)

对于自WWDC19之后发现此问题的任何人,Apple现在都提供CloudKit CoreData同步。

使用此技术的核心步骤是从NSPersistentContainer切换到NSPersistentCloudKitContainer

您可以采取一些其他步骤来允许后台同步。

详细信息可以在这里找到:https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit

我也发现这篇文章是很好的参考:

https://www.andrewcbancroft.com/blog/ios-development/data-persistence/getting-started-with-nspersistentcloudkitcontainer/

答案 1 :(得分:1)

因此,CloudK不能被CloudKit取代,因为CloudKit不支持离线模式。 我找到了将我的CoreData与CloudKit同步的库,它的工作方式与预期的一样。 图书馆:https://github.com/mentrena/SyncKit

更新:在发布之前,SyncKit遇到了多个问题,最终迁移到了Firebase。生产工作正常。