【问题标题】:CoreData to CloudKit migrationCoreData 到 CloudKit 的迁移
【发布时间】:2017-05-25 04:21:59
【问题描述】:

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

我想退役 Core-Data 并用 CloudKit 替换它,但用户有大量重要数据,应该以某种方式迁移。 还有很多类正在使用 CoreData 实体,它们不应该受到影响(CRUD 操作除外)。 没有找到任何直接的指导方针。

我的草稿解决方案:

-检查用户是否有CoreData

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

-将它们写入云端

-删除CoreData文件

它会按预期工作吗?

Core-Data 移除后可以使用继承自 NSManagedObject 的类吗? 会不会有什么副作用?

【问题讨论】:

  • 请记住,CloudKit 数据不可离线使用。仅当您有网络连接时才可用。
  • 谢谢!是的,这是个问题……看起来 CloudKit 还处于早期阶段,但我不想使用 Firebase 等第三方工具。所以目前最好的解决方案是将 CoreData 与 CloudKit 同步?
  • 是的 CloudKit(云存储)和 CoreData(本地存储)的用途非常不同,可能对 CloudKit 基础有所帮助。您必须构建自己的逻辑来将 CoreData 实体映射到 CloudKit 记录类型。您确实可以存档记录的元数据(如更改标签)。请参阅 - developer.apple.com/library/content/documentation/… 了解基本信息。然后观看 WWDC 视频。
  • 感谢您的参考。我找到了github.com/mentrena/SyncKit 项目,它完成了这项工作。它按预期工作。

标签: ios core-data cloudkit


【解决方案1】:

对于自 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/

【讨论】:

    【解决方案2】:

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

    更新:在 SyncKit 发布之前就遇到了多个问题,最终迁移到了 Firebase。在产品中运行良好。

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 2015-01-04
      • 2014-11-05
      • 1970-01-01
      相关资源
      最近更新 更多