Вставка данных после миграции основных данных - PullRequest
3 голосов
/ 03 ноября 2010

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

В настоящее время мой подход состоит в том, чтобы определить пользовательский NSEntityMigrationPolicy и переопределить endEntityMapping: manager: error:

- (BOOL)endEntityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error {
if (![super endEntityMapping:mapping manager:manager error:error]) return NO;
Theme *defaultTheme = [NSEntityDescription insertNewObjectForEntityForName:@"Theme" inManagedObjectContext:[manager destinationContext]];
[defaultTheme setName:NSLocalizedString(@"Default", @"Default theme name")];
return YES;
}
  1. Это хороший подход?
  2. Почему бы не вызывать тему -awakeFromInsert?

1 Ответ

3 голосов
/ 04 ноября 2010

Да, это хороший подход; вероятно, лучший подход в настоящее время.

Тема -awakeFromInsert не вызывается, потому что ваши пользовательские подклассы не используются во время миграции. Менеджер миграции выполняет все действия по миграции, используя только NSManagedObject, вместо использования каких-либо пользовательских объектов.

Аналогично, вы не должны объявлять его как Theme (вызов -insertNewObjectForEntityForName: inManagedObjectContext: действительно возвращает ваниль NSManagedObject) в этом методе Это просто приведет к путанице во время обслуживания кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...