Macos 如何在核心数据中将数据从内存数据库迁移到NSSQLiteStoreType数据库?

Macos 如何在核心数据中将数据从内存数据库迁移到NSSQLiteStoreType数据库?,macos,cocoa,core-data,Macos,Cocoa,Core Data,在我的OSX应用程序中,我有两个DB实例:一个使用NSSQLiteStoreType,另一个使用NSInMemoryStoreType。数据模型是相同的 当应用程序运行时,它使用内存中的DB实例来持久化数据。使用完我的应用程序后,我想将收集的所有数据存储到NSSQLiteStoreType实例 我对这种类型的数据迁移非常陌生 有人对我怎么做有什么建议或建议吗 非常感谢您的任何帮助 要从一种存储类型迁移到另一种存储类型,需要使用NSPersistentStoreCoordinator上的-migr

在我的OSX应用程序中,我有两个DB实例:一个使用NSSQLiteStoreType,另一个使用NSInMemoryStoreType。数据模型是相同的

当应用程序运行时,它使用内存中的DB实例来持久化数据。使用完我的应用程序后,我想将收集的所有数据存储到NSSQLiteStoreType实例

我对这种类型的数据迁移非常陌生

有人对我怎么做有什么建议或建议吗


非常感谢您的任何帮助

要从一种存储类型迁移到另一种存储类型,需要使用
NSPersistentStoreCoordinator上的
-migratePersistentStore:toURL:options:withType:error:
。这将创建新商店

然而,我不明白你为什么要这样做。如果您希望获得最高性能,那么您可能只想从一开始就使用二进制存储。这会将所有内容加载到内存中,并在保存时将所有内容写入磁盘。不需要迁移


内存中的存储用于临时数据,从内存中的存储迁移出去需要相当多的CPU。

哦,好吧……我不知道二进制存储在内存中,它是原子的。它在使用过程中加载到内存中,然后在您
-save:
时自动保存。要么全部,要么什么都没有,所以它实际上是一个内存中的存储,可以持久保存到磁盘。等等,但是如果对于我的sqlite存储,我在save:operation时也写入磁盘,那么二进制存储和sqlite存储之间有什么区别呢?sqlite写入sqlite文件。二进制文件写入一个专有的格式化文件。SQLite不是原子的,二进制是。SQLite只将当前正在使用的内容加载回内存,二进制加载所有内容。