我們有一些代碼來確定是否沒有當前創建的數據庫文件。如果是這種情況,我們會根據文件系統中可能存在的一些文件(基本上是遷移例程),執行一些初始化例程來填充用戶的數據庫。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