2010-09-26 10 views
5

Ich versuche, ein Duplikat eines vorhandenen NSManagedObject und zugehörige Unterobjekte in Core Data zu machen. Ich kann keinen einfachen Weg finden, dies zu tun.So machen Sie Deep Copy von NSManagedObject in Core Data

Ich habe einen NSArrayController, der aus einer Core Data-Datenbank gefüllt wird. Ich möchte das Objekt am selectionIndex nehmen und eine tiefe Kopie machen, indem ich es mit dem gleichen Elternobjekt in Verbindung halte und alle untergeordneten Objekte kopiere.

Jede Hilfe wird geschätzt!

Dank TechZen für den Link. Ich verwendete den Beispielcode von dieser Site und verwendete diesen aufrufenden Code:

RuleSetVersion *object = [[ruleSetVersionArrayController selectedObjects] lastObject]; 

NSString *parentEntity = @"RuleSet"; 

RuleSetVersion *newObject = (RuleSetVersion*)[self copyObject:object toContext:[self managedObjectContext] parent:parentEntity]; 

[newObject setRuleSetEffectiveDate:[[NSDate alloc] init]]; 
[newObject setRuleSetVersionLastModifiedDate:[[NSDate alloc] init]]; 

[newObject setRuleSet:object.ruleSet]; 

NSError *error; 

if ([managedObjectContext save:&error] == NO) { 
    [NSApp presentError:error]; 
} 

Antwort

1

Es ist ziemlich beteiligt. Sehen Sie diese Antwort und den Beispielcode aus ihm verbunden:

How do I copy or move an NSManagedObject from one context to another?

+0

Vielen Dank für die Antwort! Ich sehe diese Antwort, aber es scheint zu diskutieren, ein Objekt von einem Kontext zum anderen zu kopieren. Gilt die gleiche Antwort, wenn ich nur einen Kontext verwenden möchte? – jschmidt

+0

Es stellt sich heraus, dass dies funktioniert, aber es dauerte einige Neu-Jiggering von meinem Telefoncode. Die URL stellt den Code zum Ausführen der Kopie bereit, beschreibt jedoch nicht, wie sie entsprechend aufgerufen wird. Ich füge meinen Code in meine Frage oben ein. – jschmidt