В моем приложении для cocoa я использую основные данные для сохранения всех моих данных. Но некоторое время, я получаю ниже заданную проблему.
Выпуск:
CoreData: error: (14) I/O error for database at /Users/my-mac/Documents/FileT.sqlite. SQLite error code:14, 'unable to open database file'
Здесь я дал ссылку на код для persistentStoreCoordinator:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
stringByAppendingPathComponent: @"FileT.sqlite"]];
NSError *error = nil;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:[self managedObjectModel]];
options = @{
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES
};
if(![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeUrl options:options error:&error]) {
/*Error for store creation should be handled in here*/
}
return _persistentStoreCoordinator;
}
Может ли кто-нибудь предположить, чего я здесь не вижу?
Приложение может перемещать или изменять файлы журнала WAL или файлы SQLite или, возможно, сделало предположения о структуре файла, которая была действительна для версий Core Data, которые не использовали WAL.
Также возможно, что ваша база данных SQLite повреждена, а ошибка 14 – SQLite, пытающаяся восстановить файл, когда Core Data откроет его. Эта коррупция может произойти, если приложение не закрывалось должным образом при записи, и многие другие обстоятельства. Неправильное закрытие – наиболее распространенный случай на платформах Apple, хотя, например, если Core Data записывает записи, а ОС убивает приложение, потому что оно не отвечает. Это может привести к коррупции.