我们有一些代码来确定是否没有当前创建的数据库文件。如果是这种情况,我们会根据文件系统中可能存在的一些文件(基本上是迁移例程),执行一些初始化例程来填充用户的数据库。CoreData在启动时检测到数据库不一致
的套路基本上是这样的
NSURL * defaultStorePath = [NSPersistentStore MR_defaultLocalStoreUrl];
BOOL initializeDatabase = ![[NSFileManager defaultManager] fileExistsAtPath:[defaultStorePath path]];
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreAtURL:defaultStorePath];
if(initializeDatabase)
// ... ingest user files ...
因此,如果.sqlite
文件不存在,这个效果很好。但是,如果.sqlite-wal
或.sqlite-shm
文件丢失/损坏,我们无法找到检测此情形的方法。
我们想要做一个数据完整性检查或在这种情况下的东西。
也许我们可以用MagicalRecord提交一个功能请求来帮助我们处理故障。谢谢 – yano