NSPersistentStoreCoordinator addPersistentStoreWithType: ошибка метода без режима журнала iOS 9
Я проверяю свое приложение с помощью iOS9.
Проблема возникает, когда я пытаюсь сбросить базу данных.
Смотрите следующий код: (Its in AppDelegate
)
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if(persistentStoreCoordinator == nil)
{
....
....
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
[persistentStoreCoordinator lock];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
}
[persistentStoreCoordinator unlock];
}
return persistentStoreCoordinator;
}
Здесь возможны следующие варианты..
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,nil];
Этот код прекрасно работает с iOS8 и ниже. Но когда я запускаю его с iOS9, происходит следующее исключение.
CoreData: error: - addPersistentStoreWithType: SQLite конфигурация: (null) Адрес:файл://файл/var/мобильный/контейнеров приложений/данных//.....базы данных SQLite опции:{ NSInferMappingModelAutomaticallyoption = 1; NSMigratePersistentStoresAutomaticallyoption = 1;} ... возвращенный ошибка Error Domain=Nscocoaerrordomain Code=522 "(null)" UserInfo={NSUnderlyingException=ошибка ввода-вывода для базы данных на /var / mobile / Containers / Data / Application / ... .базы данных SQLite. Ошибка SQLite код:522, 'not an error', NSSQLiteErrorDomain=522} с userInfo словарь { NSSQLiteErrorDomain = 522; NSUnderlyingException = " I/O ошибка базы данных в /var/мобильный/контейнеры/данные/приложение/....*.базы данных SQLite. Ошибка SQLite код: 522, "не ошибка";}
Но если я добавлю пару ключ-значение как "journal_mode" = "MEMORY"
в моем существующем словаре " options", эта ошибка не произойдет.
Вопрос:
Что означает "journal_mode"в словаре опций? Является ли это реальной проблемой в моем случае?
1 ответ:
Поэтому у меня недостаточно очков репутации, чтобы прокомментировать ваш пост. Но большую часть того, что вам нужно знать о
Если мое мнение имеет значение, я никогда не буду использоватьjournal_mode
, можно найти здесь .MEMORY
, это просто пугает меня.Я бы рекомендовал либо
DELETE
, либоWAN
. Оба они устраняют ошибки, которые вы видите, и кажутся гораздо более безопасными для использования, чем использованиеMEMORY
.