Это довольно просто - как только вы знаете, где искать. # В вашем AppDelegate вы настраиваете NSPersistentStoreCoordinator - и вам нужно добавить некоторые опции для этого, чтобы он мог обрабатывать автоматическую миграцию:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
Тогда вам нужно сделать в xCode:
- Выберите файл xcdatamodeld
- Выберите меню редактора вверху, затем выберите «Добавить версию модели»
- Теперь в вашем файле xcdatamodeld есть два (modelname.xcdatamodel и modelname2.xcdatamodel).
- Теперь модель name.xcdatamodel имеет зеленую галочку, означающую, что это текущая версия, но нам нужно изменить модель name2.xcdatamodel как текущую версию
- Выберите файл xcdatamodeld, затем выберите меню «Вид» вверху, затем выберите «Утилиты», затем выберите «Показать инспектор файлов», показанный в правой части XCode, а затем выберите «Версионную базовую модель данных» - иметь «Текущий» (DropDownList) - выбрать modelname2 (тот, который вы только что сделали в текущей версии, отмечен зеленой галочкой).
- Теперь, когда вы устанавливаете эту версию на устройство, которое имеет старую модель - оно автоматически обновит эту модель до новой модели.
сохраните все измененные файлы, а затем, как только вы подготовитесь к развертыванию обновления, вы удалите все промежуточные файлы и просто развернете самые старые и последние модели. наоборот (шаг 4,5,6) для последней до старой модели (текущая)