Wie kann ich kopieren oder verschieben Sie ein NSManagedObject von einem Kontext in einen anderen?

Habe ich, was ich davon ausgehen ist ein ziemlich standard-setup, mit einem Notizblock MOC, die wird nie gespeichert (enthält eine Reihe von Objekten aus dem Internet heruntergeladen) und einem anderen dauerhaften MOC, die weiterhin Objekte. Wenn der Benutzer wählt ein Objekt aus scratchMOC hinzufügen, um Ihre Bibliothek, ich möchte entweder 1) entfernen Sie das Objekt aus scratchMOC und einfügen in permanentMOC, oder 2) kopieren Sie das Objekt in permanentMOC. Die Core Data FAQ sagt, ich kann kopieren Sie ein Objekt wie dieses:

NSManagedObjectID *objectID = [managedObject objectID];
NSManagedObject *copy = [context2 objectWithID:objectID];

(In diesem Fall, context2 wäre permanentMOC.) Jedoch, wenn ich dies tun, wird das kopierte Objekt ist fehlgeschlagen; die Daten zunächst ungelöst. Wenn es nicht behoben wird, später, alle Werte sind null; keine der Daten (Attribute oder Beziehungen) aus dem original-managedObject sind tatsächlich kopiert oder referenziert werden. Also ich sehe keinen Unterschied zwischen der Verwendung dieser objectWithID: Methode und das einlegen eines völlig neuen Objektes in permanentMOC mit insertNewObjectForEntityForName:.

Ich weiß, ich kann ein neues Objekt erstellen in permanentMOC und manuell kopieren Sie die einzelnen Schlüssel-Wert-paar aus dem alten Objekt, aber ich bin nicht sehr glücklich mit dieser Lösung. (Ich habe eine Reihe von verschiedenen verwalteten Objekten, für die habe ich dieses problem, so dass ich nicht wollen, zu schreiben und zu aktualisieren, kopieren: Methoden für alle von Ihnen, wie ich weiter zu entwickeln.) Gibt es einen besseren Weg?

InformationsquelleAutor Aeonaut | 2010-06-08

Schreibe einen Kommentar