Добавление сущности к основным данным - PullRequest
4 голосов
/ 31 октября 2011

У нас есть приложение, которое использует Core Data. В следующей версии я хотел бы добавить новую сущность к уже существующим сущностям.

Можно просто добавить новый, а затем заполнить его из программного обеспечения, или мне нужно подумать над чем-то?

Ответы [ 2 ]

15 голосов
/ 01 ноября 2011

Существует несколько типов миграции.Самым простым является облегченная миграция с использованием логической модели сопоставления. Это означает, что вы просто указываете выполнить миграцию, а остальное выполняет программное обеспечение.Однако предостережение заключается в том, что он может справиться только с определенными изменениями.Добавление объекта должно быть в порядке.

Чтобы включить облегченную миграцию, вам нужно указать несколько параметров при открытии постоянного хранилища:

NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
[options setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
[options setObject:[NSNumber numberWithBool:YES] forKey:NSInferMappingModelAutomaticallyOption];

 NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
   NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}    

Последнее, что нужно сделать, - это внести изменения в модель данных,вам нужно добавить версию модели.В Xcode 4 выберите вашу модель данных на боковой панели, выберите «Добавить версию модели» из меню редактора и назовите вашу новую версию.Затем вам нужно установить новую версию в качестве активной: снова выберите основной файл модели данных на левой боковой панели, а затем на правой боковой панели на первой вкладке должно появиться всплывающее меню «Версионная модель данных».

Это очень важно.Для выполнения миграции Core Data требуется версия вашей модели, с которой было создано старое хранилище, а также версия, на которую вы хотите выполнить миграцию.Если у вас нет старой версии, миграция завершится неудачей.

1 голос
/ 31 октября 2011

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

Я перенес базы данных Core Data ранее, но в MAC OS, и это было более 2 лет назад.

Вот руководство

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Introduction/Introduction.html

...