Ich habe, was fühlt sich sollte ein einfaches Problem sein, kann aber keine einfache Antwort finden.Kerndatenmigration: Wie man neues Attribut auffüllt?
Ich habe eine einfache Migration, ich muss nur eine synthentische Eigenschaft für die Verwendung in einem abgerufenen Ergebnis-Controller hinzufügen. Diese neue Eigenschaft ist nur ein BOOL (zum Sortieren verwendet), der von einer anderen Eigenschaft abgeleitet ist.
Beispiel:
var title: String? // "engineer" | "accountant"
var hasTitle: Bool // title != nil
einfach, ich brauche das neue Feld hinzufügen hasTitle
(was trivial scheint), und die es einmal füllen. Ich möchte diesen Code von meiner normalen App-Logik fernhalten, damit ich nicht alle meine Schemaänderungen in einem Protokoll erfassen muss.
Ist es möglich, eine einfache Migration durchzuführen, gefolgt von einer isolierten, einmaligen Massenaktualisierung, oder muss ich eine benutzerdefinierte/schwergewichtige Migration durchführen.
Und zweitens, wenn ich eine benutzerdefinierte Migration tun muß, gibt es mildernde Techniken - kann ich einen Wertausdruck „Funktion“ verwenden, um das oben genannte zu tun initialisieren
Was ich will (title = null!) meiden muss ein NSUserDefaults-Flag für eine Migration festlegen und das bei jedem Start überprüfen. Ich möchte die Komplexität der Migration auf migrationsspezifischen Code einschränken und die normale App-Logik nicht belasten.
Danke!