la asignación de propiedades no se asocia correctamente. ¿Por qué?

EDITAR 1 Si bien entiendo que para este escenario particular (y otros similares), podría usar el editor de mapeo solo para migrar mi tienda correctamente para que los valores en la tienda persistente no salten, pero eso no es una solución a mi problema actual, sino solo evita abordar la raíz del problema. Estoy interesado en seguir con mi política de migración personalizada, ya que esto me dará mucho control a través del proceso de migración, especialmente para futuros escenarios en los que la configuración de una política de migración personalizada funcionará para mí. Esto es para una solución a largo plazo y no solo para este escenario.

Le insto a que intente ayudarme a resolver la situación actual en lugar de desviarme a una migración ligera o aconsejarme que evite usar una política de migración. Gracias.

Realmente espero resolver esto y sus valiosos aportes / ideas sobre lo que podría hacer para solucionar este problema.

Que he hecho: Tengo una política de migración configurada para que los datos de origen se puedan copiar en los datos de destino deversion 1 del modelo central paraversion 2.

Esta es la política de migración:

- (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;
}

Entonces, aunque las propiedades probadas muestran los valores correctos en tiempo de ejecución, los valores resultantes guardados en el almacén del modelo de datos son incorrectos como se ve en las instantáneas.

Aquí hay una comparación de la versión 1 a la versión 2 del almacén de datos.

Versión 1: correcta

a la Versión 2: que ahora está almacenando los valores incorrectamente.

La salida esperada debe tener el precio del Producto insertado en elproductPrice campo y no en elProductPriceNeedsUpdating campo que en realidad solo debería tener valores booleanos. ¿Alguien puede ayudarme a entender lo que estoy haciendo mal o explicar qué está pasando aquí?

ACTUALIZACIÓN 1 - Aquí estan misentity mappings:

Actualización 2 - 20 / agosto / 2014 01:02 GMT

Cuando elimino el atributoProductPriceLastUpdated de tipodate de la versión 1 y elimine el atributoProductPriceNeedsUpdate de tipoboolean en la versión 2, dejando solo los dos atributos que coinciden en la versión 1 y 2, entonces todo funciona. Aunque puedo dejarlo aquí y seguir adelante, no puedo ignorar a los usuarios que actualmente están utilizando la versión 1 de la base de datos que no tiene sentidoProductPriceLastUpdated atributo que necesito el tipo convertido a booleano y también tengo el nombre cambiado aProductPriceNeedsUpdate. Eso es cuando las cosas empiezan a ponerse raras, y los valores de los precios se muestran en elProductPriceNeedsUpdate campo en lugar delproductPrice campo.

Espero que alguien pueda abordar el problema original y decirme por qué es que la asignación de entidades, o más aún, la asignación de propiedades no se guarda correctamente.

Actualización 3 - EntityMapping y propiedades:

Versión 1

Versión 2

¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta