2015-09-17 7 views
2

Я проверяю свое приложение на iOS9.NSPersistentStoreCoordinator addPersistentStoreWithType: ошибка метода без journal_mode iOS 9

Проблема возникает, когда я пытаюсь сбросить базу данных.

Смотрите ниже код: (ИТС) 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 configuration:(null) URL:file:///var/mobile/Containers/Data/Application/…..sqlite options:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } ... returned error Error Domain=NSCocoaErrorDomain Code=522 "(null)" UserInfo={NSUnderlyingException=I/O error for database at /var/mobile/Containers/Data/Application/….sqlite. SQLite error code:522, 'not an error', NSSQLiteErrorDomain=522} with userInfo dictionary { NSSQLiteErrorDomain = 522; NSUnderlyingException = "I/O error for database at /var/mobile/Containers/Data/Application/….*.sqlite. SQLite error code:522, 'not an error'"; }

Но если добавить пару ключ-значение, как "journal_mode" = "MEMORY" в моей существующей «варианты» словаря, эта ошибка не происходит.

Вопрос:

Что "journal_mode" означает в словаре вариантов? Это реальная проблема в моем случае?

+0

Это происходит со мной! сделал ли journal_mode какой-либо другой вопрос обеспечения? –

+0

Я так не думаю – Confused

+1

В моем случае я обнаружил, что iOS9 создает еще 2 файла, при удалении БД мне пришлось удалить их все, чтобы заставить его работать –

ответ

2

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^