Core data 一家商店能安全地开两次吗?

Core data 一家商店能安全地开两次吗?,core-data,nspersistentstore,Core Data,Nspersistentstore,作为我应用程序中的常规安全后台任务,我必须使用SaveAs保存我的NSManagedObjectContext。。。方法名为migratePersistentStore:toURL:options:withType:error:。但是,此方法从协调器中删除存储并添加新存储。这是致命的,因为我的完整UI基于从旧商店加载的对象。重新加载UI不是选项,因为用户可能正在UI中深入工作,并且当前正在编辑从旧存储加载的对象 我的想法是提出第二个协调器堆栈、moc等,并让这个副本执行迁移。第二个协调器能否安全

作为我应用程序中的常规安全后台任务,我必须使用SaveAs保存我的
NSManagedObjectContext
。。。方法名为
migratePersistentStore:toURL:options:withType:error:
。但是,此方法从协调器中删除存储并添加新存储。这是致命的,因为我的完整UI基于从旧商店加载的对象。重新加载UI不是选项,因为用户可能正在UI中深入工作,并且当前正在编辑从旧存储加载的对象


我的想法是提出第二个协调器堆栈、moc等,并让这个副本执行迁移。第二个协调器能否安全地打开
NSPersistentStore
(只读)?我猜不是。我不明白为什么苹果没有在迁移后添加保留原始存储的选项。

如果您的存储是
SQLite
存储,那么是的,您可以根据需要打开任意多的
NSPersistentStoreCoordinator
实例。如果您没有使用
SQLite
存储,那么我不推荐使用它


但是,如果您正在进行备份,是否存在不使用
NSFileManager
复制文件的原因?应该比迁移快得多。足够快,您可以在复制过程中安全地锁定存储。

我需要清除iCloud元数据,并希望将所有内容都放在一个文件中(日志模式)。因此,我使用了迁移。你会怎么做?看看这个示例应用程序,它包括一个开关,用于在应用程序启动或激活时进行备份。不确定它会给你的方法增加什么价值,但你永远不知道@诺伯特:很公平,那么迁移是有意义的,我的答案是正确的。您完全可以打开第二个核心数据堆栈来处理备份,它不会影响您的UI堆栈。