сопоставление свойств не связано правильно. Зачем?

РЕДАКТИРОВАТЬ 1 Хотя я понимаю, что для этого конкретного сценария (и других) я мог бы использовать только редактор отображений, чтобы правильно перенести мой магазин, чтобы значения в постоянном хранилище не перепрыгивали, но это не решение моей текущей проблемы, а только избегает решения корня проблемы. Я заинтересован в том, чтобы придерживаться своей пользовательской политики миграции, поскольку это даст мне большой контроль над процессом миграции, особенно в будущем, когда настройка пользовательской политики миграции будет работать для меня. Это для долгосрочного решения, а не только для этого сценария.

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

Я действительно надеюсь разобраться с этим и вашими ценными предложениями / идеями о том, что я могу сделать, чтобы решить эту проблему.

Что я сделал: У меня настроена политика миграции, чтобы исходные данные можно было скопировать в данные назначения изversion 1 основной модели вversion 2.

Это миграционная политика:

- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error {

    // Create the product managed object 
    NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:[mapping destinationEntityName]
                                                               inManagedObjectContext:[manager destinationContext]];

    NSString *productCode = [sInstance valueForKey:@"productCode"];
    NSNumber *productPrice = [sInstance valueForKey:@"productPrice"];

    [newObject setValue:productCode forKey:@"productCode"];
    [newObject setValue:productPrice forKey:@"productPrice"];

    //This is the field where the name has changed as well as the type.
    [newObject setValue:[NSNumber numberWithBool:YES] forKey:@"productPriceNeedsUpdating"];

    // Set up the association between the old source product and the new destination Product for the migration manager
    [manager associateSourceInstance:sInstance withDestinationInstance:newObject forEntityMapping:mapping];


    /* 
  A test statement to make sure the destination object contains the correct
    values int he right properties:

    Product description: <NSManagedObject: 0xb983780> (entity: Product; id: 0xb9837b0 <x-coredata:///Product/t97685A9D-09B4-475F-BDE3-BC9176454AEF6> ; data: {
        productCode = 9999;
        productPrice = "2.09";
        productPriceNeedsUpdating = 1;
    })
    */


    // Set up the association between the old source product and the new destination Product for the migration manager

    return YES;
}

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

Вот сравнение с версии 1 до версии 2 хранилища данных.

Версия 1: исправить

Версия 2: которая теперь хранит значения неправильно.

Ожидаемый результат должен включать цену Продукта вproductPrice поле, а не вProductPriceNeedsUpdating поле, которое на самом деле должно иметь только логические значения. Может ли кто-нибудь помочь мне понять, что я делаю неправильно, или объяснить, что здесь происходит?

ОБНОВЛЕНИЕ 1 - вот моиentity mappings:

Обновление 2 - 20 августа 2014 г. 01:02 по Гринвичу

Когда я удаляю атрибутProductPriceLastUpdated типаdate с версии 1 и удалите атрибутProductPriceNeedsUpdate типаboolean в версии 2, оставив только два атрибута, которые совпадают в версии 1 и 2, все работает. Несмотря на то, что я могу оставить это здесь и двигаться дальше, я не могу игнорировать пользователей, которые в настоящее время используют версию 1 базы данных, которая имеет это бессмысленноеProductPriceLastUpdated атрибут, который мне нужен тип, преобразованный в логическое значение, а также имя изменилось наProductPriceNeedsUpdate, То, когда вещи начинают идти странно, и значения цены показаны вProductPriceNeedsUpdate поле вместоproductPrice поле.

Я надеюсь, что кто-то может решить исходную проблему и сказать мне, почему так происходит то, что entityMapping, или, более того, отображение свойств не сохраняется должным образом?

Обновление 3 - EntityMapping и свойства:

Версия 1

Версия 2

Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос