Миграция вручную с помощью MagicalRecord

Я выполняю миграцию своего хранилища CoreData, где заменяю строковый атрибут атрибутом BOOL: когда строка была «0», логическое значение должно быть «ДА», а во всех остальных случаях логическое значение должно быть «НЕТ». . Звучит достаточно просто, но я думаю, что мне все еще нужно добавить модель сопоставления. Я добавил это в Xcode и реализовал createDestinationInstancesForSourceInstance:

- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance entityMapping: (NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error
{
   NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:[mapping destinationEntityName] inManagedObjectContext:[manager destinationContext]];

   NSString *oldValue = [sInstance valueForKey: @"oldString"];
   NSNumber *newValue = @(NO);

   if ([oldValue integerValue] == 0)
      newValue = @(YES);

   [newObject setValue: newValue forKey: @"newBool"];

   [manager associateSourceInstance:sInstance withDestinationInstance:newObject forEntityMapping:mapping];

   return YES;
}

Однако это никогда не вызывается.

Поскольку я использую MagicalRecord, я также использую:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed: @"storename.sqlite"];

Я читал, что мне также нужно использовать: NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @(YES), NSInferMappingModelAutomaticallyOption: @(NO)}; при запуске моего магазина, но как мне использовать это с MagicalRecord?

ОБНОВЛЕНИЕ: MR использует MR_autoMigrationOptions для установки параметров миграции. Есть ли способ изменить их для поддержки ручной миграции?


person koen    schedule 03.03.2014    source источник


Ответы (1)


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

[MagicalRecord setupManuallyMigratingStackWithSQLiteStoreNamed: @"storename.sqlite"];

person Paul Sturgess    schedule 07.03.2014
comment
У меня нет этого в MR, какую версию вы используете? - person koen; 07.03.2014
comment
MagicalRecord версии 3 - person Paul Sturgess; 10.03.2014
comment
Это неизданная версия, и я не решаюсь ее использовать. Но все равно спасибо. - person koen; 10.03.2014
comment
Что бы это ни стоило, я использую его уже несколько месяцев, и он был твердым. Сказав это, я не пробовал перенос стека вручную. - person Paul Sturgess; 10.03.2014
comment
Вдохновленный отличной новой книгой Тима Роудли о CoreData для iOS, я фактически принял решение в эти выходные (до того, как вы ответили сегодня) пока не использовать MR. Я заставляю себя лучше понимать Core Data, взаимодействуя с ним напрямую, а не через фреймворк. Как только я лучше пойму это, я могу вернуться к MR. Еще раз спасибо за ваше понимание. - person koen; 11.03.2014