Зараз я з’ясував, що це досить просто - коли ти знаєш, де шукати.
У своєму 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:
- Виберіть файл xcdatamodel
- Виберіть меню дизайну у верхній частині - потім модель даних - а потім виберіть Додати модель версії
- Потім ваш файл xcdatamodel буде переміщено в новий каталог з тим самим іменем, що і ваш файл xcdatamodel, але з розширенням xcdatamodeld - у цьому каталозі буде другий файл з 2 у назві. Виберіть новий файл, а потім Проектування-> Модель даних-> Встановити поточну версію ( у Xcode 4 ви це робите )
- Якщо ви вже внесли зміни, які спричинили несумісність вашого проекту, вийміть ці зміни з оригінального файлу xcdatamodel. Якщо вам ще не потрібно внести зміни - просто відредагуйте файл 2.xcdatamodel (той, який ви щойно зробили в поточній версії).
- Тепер, коли ви встановлюєте цю версію на пристрій зі старою моделлю, він автоматично оновить цю модель до нової.
Це здається чудовим і таким простим, як я хотів - але я думаю, що під час зміни моделі потрібно бути обережним - інакше доведеться створювати нову версію для кожної зміни.
Я думаю, що я буду робити, це те, що я зберігатиму всі змінені файли, а потім, як тільки я буду готовий до розгортання мого оновлення, я видалю всі проміжні файли і просто розгортаю за допомогою найстаріших і найновіших моделей.
ОНОВЛЕННЯ (15.07.2011):
Дякую @ rockstarberlin за те, що він вказує, що в apple є оновлена документація:
Xcode 4: Встановлення поточної версії керованої об'єктної моделі
Оновлення: 19.08.2013 краще посилання:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html