the*_*end 1 cocoa core-data nsfilemanager
通常,当我备份我的应用程序的核心数据文件时,我只是在应用程序运行时将.sqlite文件复制到另一个位置.但是现在启用了日记(wal),这不再起作用了.我看不到NSPersistentStoreCordinator或NSManagedObjectContext编写新文件的方法.我猜也许我有两种方法:
有更好的想法吗?谢谢.
更改日志模式将消除日志文件,因此很简单.我不知道我相信它会供你使用 - 因为无法保证Core Data实际上已经刷新了对SQLite文件的所有新更改.它可能没问题,但可能有一些内存中的更改,Core Data还没有写出来.这几乎肯定是安全的,但偶尔也不会有效的可能性很小.
选项2会更安全,但更多工作.我将使用NSPersistentStoreCoordinator's migratePersistentStore:toURL:options:withType:error:方法创建第二个持久存储(文档特别提到它对"另存为"操作很有用).告诉核心数据为您创建副本应确保实际复制所有必需的内容.只是不要在主持久性存储协调器上执行此操作,因为在迁移之后,PSC会删除对原始存储对象的引用(文件仍然存在,但该PSC不再使用它).步骤将是
NSPersistentStoreCoordinator并添加原始持久性存储文件.