Я вношу довольно много изменений в объектную модель для выпуска обновления нашего приложения, т.е. добавленные/удаленные сущности, новые атрибуты и отношения. Кажется, что работа действительно складывается для надлежащей миграции основных данных. Поскольку данные в основном служат кешем для улучшения работы в автономном режиме. на данный момент действительно нужна миграция. Я думаю, было бы намного проще, если бы ее просто сдуло и создало заново.
Основываясь на различных сообщениях, которые я наткнулся на эту тему, общая стратегия заключается в
Это код, который повторно инициализирует объектную модель
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"<model name>" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
return managedObjectModel;
}
и воссоздает объектную модель и сохраняет ее с помощью
objectManager = [RKObjectManager objectManagerWithBaseURL:
[NSString stringWithFormat:@"http://%@/v3",
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"APIDomain"]]];
NSManagedObjectModel *objectModel = [self managedObjectModel];
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:storeName usingSeedDatabaseName:nil managedObjectModel:objectModel delegate:nil];
Однако я получаю следующую ошибку:
Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина : '+entityForName: не удалось найти NSManagedObjectModel для имени сущности 'UTCity''
Я чувствую, что это довольно близко, так как перезапуск приложения успешно создает новое хранилище, работает правильно.
-ПФ