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 2

1 ответ:

Поэтому у меня недостаточно очков репутации, чтобы прокомментировать ваш пост. Но большую часть того, что вам нужно знать о journal_mode, можно найти здесь .

Если мое мнение имеет значение, я никогда не буду использовать MEMORY, это просто пугает меня.

Я бы рекомендовал либо DELETE, либо WAN. Оба они устраняют ошибки, которые вы видите, и кажутся гораздо более безопасными для использования, чем использование MEMORY.