Облегченная миграция базовых данных: не удается найти или автоматически определить модель сопоставления для миграции - PullRequest
7 голосов
/ 25 октября 2010

Таким образом, я создал новую версию своей модели данных и сделал ранее необязательное поле необязательным (присвоив ему значение по умолчанию).Согласно документации это должно означать, что моя миграция подходит для облегченной автоматической миграции.

Я также добавил опции, которые позволяют это при открытии магазина, также согласно документации:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

Однако при запуске моего приложения я получаю следующую ошибку:

"Не удается найти или автоматически определить модель сопоставления для миграции".

Кто-нибудь знаетв чем здесь может быть проблема?Любая помощь приветствуется ... спасибо!

1 Ответ

2 голосов
/ 28 октября 2010

Вы, наверное, смотрели на это, но если нет ... Обнаружение облегченной миграции основных данных

С точки зрения другого кода отладки я нашел это полезным:

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyDataStore.sqlite"]];

NSError *error = nil;
NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType URL:storeUrl error:&error];

if (!sourceMetadata)
{
    DLog(@"sourceMetadata is nil");
}
else
{
    DLog(@"sourceMetadata is %@", sourceMetadata);
}

И, наконец, это немного болезненно, но в Finder вы можете «Показать содержимое пакета» для своего приложения, а затем найти папку с именем .momd, а внутри нее находится файл с именем «VersionInfo.plist». Это помогло определить, что у вас есть и куда вы пытаетесь пойти.

И, наконец, вы можете попытаться создать модель отображения и посмотреть, работает ли она. Я боролся с проблемами миграции неделями, отсюда и длинный список отчаянных попыток отладки.

...