2016-04-12 42 views
0

我想将数据从一个商店复制到另一个商店。目标持久性存储可能已经有记录。这是否比任何更简单的方法,比手动通过所有记录并插入新的上下文并保存?在核心数据中的持久性存储之间复制记录?

+0

我设法完成此操作的唯一方法是在应用程序启动后显示进度指示器视图,该视图锁定视图状态,然后继续手动迁移商店。当我需要完全迁移我的Core Data模型时,我只做了两次。对于增量更改,我只会使用自动迁移。 –

回答

2

如果要复制全部的数据,可以使用migratePersistentStore:toURL:options:withType:error:,这是NSPersistentStoreCoordinator上的一种方法。这将有效地将整个持久性存储复制到新的持久性存储文件。有些事情需要注意:

  • 尽管有这个名字,但这种方法与模型版本控制没有任何关系。两者都使用“迁移”一词,但它们是不同的过程。
  • 在尝试此操作之前,您应该确保已保存全部未完成的更改。
  • 这样做了以后,你要从中迁移该店从这就意味着
    • 被管理对象的任何现有的引用现在已无效coordinator--删除。你应该重新获取它们。
    • 如果您继续使用协调器,那么您正在使用新的存储文件。

如果你不想复制数据的所有,你需要“手动”做,从老店获取对象和创造的新的等效对象。

+0

如果目标网址中存在持久性存储,将从目标持久性存储中删除记录还是保留并添加新记录? –

+1

内置迁移方法旨在创建持久性存储的新副本,并且不会与任何现有数据合并。不过,“手工”操作可以编写代码。 –

相关问题