将CoreData迁移到CloudKit

3
什么是从CoreData迁移到CloudKit并保留所有用户数据的最佳方法?
我想要废弃Core-Data并将其替换为CloudKit,但用户有大量重要数据需要迁移。此外,许多类正在使用CoreData实体,并且它们不应被影响(除了CRUD操作)。目前还没有找到任何简单明了的指南。
我的初步解决方案:
- 检查用户是否有CoreData - 将所有CoreData对象加载到内存中 - 将它们写入云端 - 删除CoreData文件
这种方式可以起到预期的效果吗?
在移除Core-Data后使用从NSManagedObject继承的类是可行的吗?它会引起任何副作用吗?

请注意,CloudKit 数据不支持离线使用。只有在您拥有网络连接时才可用。 - Tom Harrington
谢谢!是的,这是一个问题...看起来CloudKit还处于早期阶段,但我不想使用像Firebase等第三方工具。所以现在最好的解决方案是将CoreData与CloudKit同步? - Alex
是的,CloudKit(云存储)和CoreData(本地存储)服务于非常不同的目的,可能需要了解CloudKit基础知识。您需要构建自己的逻辑来将CoreData实体映射到CloudKit记录类型。您确实可以存档记录的元数据(如更改标记)。请参考-https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitQuickStart/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014987-CH1-SW1 了解基础知识。然后观看WWDC视频。 - user1046037
感谢您提供的参考。我找到了项目 https://github.com/mentrena/SyncKit ,它可以胜任这项工作。它的表现符合预期。 - Alex
2个回答

6

如果有任何人在 WWDC19 以后看到这篇文章,苹果现在提供了 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/


0
所以,CloudKit无法取代CoreData,因为CloudKit不支持离线模式。 我找到了一个库,可以将我的CoreData与CloudKit同步,并且它的效果符合预期。 库:https://github.com/mentrena/SyncKit 更新:在发布之前就遇到了SyncKit的多个问题,最终迁移到了Firebase。在生产环境中运行良好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接