Я думаю, что это добавляет к последнему ответу.
Поначалу использование ресурса комплекта и имен .sqlite показалось мне странным. Меняется ли имя ресурса пакета с изменением версии? Меняется ли имя .sqlite? Теперь моя миграция работает, и я узнал, что имя модели комплекта относится к имени каталога / папки в XCode, содержащей все модели, а не к названию версий модели в этом каталоге.
Когда вы даете имя ресурса модели:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:modelResource withExtension:@"momd"];
NSManagedObjectModel *theManagedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
Это имя ресурса модели - это каталог / папка для моделей в Xcode.
Когда вы делаете:
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:storeFileName];
NSError *error = nil;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
// handle error
}
storeFileName - это имя вашего файла .sqlite в папке / каталоге «Документы» (это , а не в комплекте).
Кроме того, при миграции с одной версии модели на другую версию модели имя файла .sqlite по умолчанию остается неизменным.