我看到這個標題的幾個崩潰報告:核心數據崩潰 - 該NSPersistentStoreCoordinator沒有持久性存儲(損壞的文件)
的NSPersistentStoreCoordinator沒有持久性存儲(損壞的文件)。它不能執行保存操作。我添加了持久性存儲協調代碼是在這裏:
NSURL *applicationDocumentsDirectory = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].lastObject;
NSURL *storeURL = [applicationDocumentsDirectory URLByAppendingPathComponent:@"myDatabase.sqlite"];
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myDataModel" withExtension:@"momd"];
NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
NSDictionary *storeOptions = @{NSInferMappingModelAutomaticallyOption:@YES,
NSMigratePersistentStoresAutomaticallyOption:@YES,
NSSQLitePragmasOption:@{@"synchronous": @"OFF"}};
// Create the persistent store.
self.persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];
NSError *error = nil;
if (![self.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:storeOptions
error:&error])
{
}
我已經登錄所散發出來的「addPersistentStoreWithType」調用的錯誤,它是:
NSCocoaErrorDomain 259
NSSQLiteErrorDomain = 11;
NSUnderlyingException = "Fatal error. The database at <path> is corrupted. SQLite Error code:11, 'database disk image is malformed'
我承擔這意味着核心數據庫在不可恢復的情況下受到損害。是這樣嗎?我有一個脫離核心數據庫並從我的服務器重新填充的備份計劃,但我想知道它是否絕對無法恢復,如果有任何問題,我可以做,找出原因可能發生的原因。
一些額外的信息:
的崩潰報告指出RAM可用3-6%,磁盤可用57%,運行iOS 10.開始看到這些報告的應用程序的版本較新的模型手機也是第一個版本作爲其中的一部分,它有一個輕量級的核心數據遷移,我不確定這是否有所作爲。我知道有98%的用戶成功升級到該版本,並沒有任何問題進行遷移。這是來自報告的堆棧跟蹤。儘管它說的是「device_locked」,但我知道,無論何時我嘗試保存到持久存儲區,即使用戶在應用程序中,都會發生崩潰。
「NSSQLitePragmasOption」選項的目標是什麼?@ {@「synchronous」:@「OFF」}'? –
寫入磁盤的速度。你認爲這可能會導致腐敗? – haplo1384
絕對。從http://sqlite.org/pragma.html#pragma_synchronous:「如果運行SQLite的應用程序崩潰,數據將是安全的,但數據庫可能會損壞我感謝喬恩,」但我是「應用程序運行sqlite」我的 –