Core Data Migration: Attribut-Mapping Wert Ausdruck
Ich habe derzeit eine cardType-Attribut für die Entität, die im alten Modell werden könnte, "Mathematik", "Bild" oder "Text". In dem neuen Modell, ich werde mit nur "Mathematik" und "Text" und haben auch eine hasImage Attribut, das will ich auf true gesetzt, wenn die alte cardType war Bild (das will ich ändern auf "Text").
Schließlich habe ich einen Satz von einem anderen Unternehmen, "Karte", von denen ein Satz zugeordnet werden können, auf ein deck, und in jeder von denen, ich habe auch die hasImage, das will ich auf true gesetzt, wenn das deck wurde von "Bild" - Typ vor.
Ist dies alles möglich mit der Value-Ausdruck in das Mapping-Modell habe ich erstellt, zwischen den beiden Versionen, oder muss ich etwas anderes tun?
Kann ich nicht finden jedes Dokument erzählt mir genau, was möglich ist in der Value-Ausdruck (Apple doc - http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreDataVersioning/Articles/vmMappingOverview.html%23//apple_ref/doc/uid/TP40004735-SW3 - hat nur eine sehr einfache transformation). Wenn ich was anderes machen, was würde das sein? Das scheint einfach genug, dass ein Ausdruck sollte in der Lage sein, es zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Sache, die Sie tun können, ist das erstellen einer benutzerdefinierten migration policy Klasse, die eine Funktion-mapping-Attribut vom ursprünglichen Wert auf einen neuen Wert. Zum Beispiel hatte ich einen Fall, wo ich brauchte, um Karte eine Entität namens MyItems hatte, dass eine direkte Beziehung zu einem Satz von Werten Entitäten genannt "Gegenstände" anstatt " speichern itemID, so konnte ich split das Modell über mehrere Filialen.
Das alte Modell sah so aus:
Das neue Modell sieht wie folgt aus:
Um dies zu tun, schrieb ich eine mapping-Klasse mit einer Funktion namens itemIDForItemName und es wurde so definiert:
#import "Migration_Policy_v1tov2.h"
Dann für das zugehörige Mapping Namen für das Attribut im mapping-Modell geben Sie den Wert-Ausdruck als Ergebnis Ihrer Funktion rufen Sie wie folgt: FUNKTION($entityPolicy,"itemIDForItemName",$source.name) . Sie müssen auch die kundenspezifischen Policy-Feld-Mapping-Name für das Attribut zu Ihrem mapping-Klasse name (in diesem Fall Migration_Policy_v1toV2).