сопоставление свойств не связано правильно. Зачем?
РЕДАКТИРОВАТЬ 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
Есть идеи?