Eigenschaftenzuordnung wird nicht korrekt zugeordnet. Warum?

EDIT 1 Ich verstehe zwar, dass ich für dieses (und ähnliche) Szenario den Zuordnungseditor alleine verwenden könnte, um meinen Speicher korrekt zu migrieren, damit die Werte im beständigen Speicher nicht herumspringen, aber das ist keine Lösung für mein aktuelles Problem, sondern nur vermeidet es, die Wurzel des Problems anzusprechen. Ich bin sehr daran interessiert, an meiner benutzerdefinierten Migrationsrichtlinie festzuhalten, da dies mir viel Kontrolle über den Migrationsprozess verschafft, insbesondere für zukünftige Szenarien, in denen das Einrichten einer benutzerdefinierten Migrationsrichtlinie für mich funktionieren wird. Dies ist eine langfristige Lösung und nicht nur für dieses Szenario.

Ich fordere Sie dringend auf, mich bei der Lösung der aktuellen Situation zu unterstützen, anstatt mich auf eine leichte Migration umzulenken oder mir zu raten, keine Migrationsrichtlinie zu verwenden. Danke.

Ich freue mich wirklich darauf, dies und Ihre wertvollen Anregungen / Ideen zu klären, was ich tun könnte, um dieses Problem zu beheben.

Was habe ich getan: Ich habe eine Migrationsrichtlinie eingerichtet, damit die Quelldaten in die Zieldaten von kopiert werden könnenversion 1 des Kernmodells zuversion 2.

Dies ist die Migrationsrichtlinie:

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

Obwohl die getesteten Eigenschaften zur Laufzeit die richtigen Werte anzeigen, sind die im Datenmodellspeicher gespeicherten resultierenden Werte nicht korrekt, wie in den Snapshots dargestellt.

Hier ist ein Vergleich von Version 1 zu Version 2 des Datenspeichers.

Version 1: Richtig

zu Version 2: Welche speichert nun die Werte falsch.

In die erwartete Ausgabe sollte der Produktpreis eingefügt werdenproductPrice Feld und nicht in derProductPriceNeedsUpdating Feld, das eigentlich nur Boolesche Werte haben soll. Kann mir jemand helfen zu verstehen, was ich falsch mache, oder erklären, was hier passiert?

UPDATE 1 - Hier sind meineentity mappings:

Update 2 - 20 / aug / 2014 01:02 GMT

Wenn ich das Attribut entferneProductPriceLastUpdated vom Typdate ab Version 1, und entfernen Sie das AttributProductPriceNeedsUpdate vom Typboolean Wenn Sie in Version 2 nur die beiden Attribute belassen, die in Version 1 und 2 übereinstimmen, funktioniert alles. Auch wenn ich es hier lassen und weitermachen kann, kann ich die Benutzer nicht ignorieren, die derzeit Version 1 der Datenbank verwenden, die diese sinnlose hatProductPriceLastUpdated Attribut, das ich brauche den Typ in Boolean konvertiert und auch den Namen geändert zu habenProductPriceNeedsUpdate. Das ist, wenn die Dinge komisch werden, und die Preiswerte sind in derProductPriceNeedsUpdate Feld anstelle derproductPrice Feld.

Ich hoffe, jemand kann das ursprüngliche Problem beheben und mir mitteilen, warum die EntityMapping- oder insbesondere die Eigenschaftenzuordnung nicht ordnungsgemäß gespeichert wird.

Update 3 - EntityMapping und Eigenschaften:

Version 1

Version 2

Irgendwelche Ideen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage