2010-09-26 15 views
5

Estoy tratando de hacer un duplicado de un NSManagedObject existente y subobjetos relacionados en Core Data. Parece que no puedo encontrar una manera fácil de hacer esto.Cómo hacer una copia profunda de NSManagedObject en Core Data

Tengo un NSArrayController que se rellena desde una base de datos Core Data. Quiero tomar el objeto en selectionIndex y hacer una copia profunda, manteniéndolo relacionado con el mismo objeto principal y copiando todos los objetos secundarios.

¡Se agradece cualquier ayuda!

Gracias a TechZen por el enlace. Utilicé el código de muestra de ese sitio y usé este código de llamada:

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

Respuesta

1

Es bastante complicado. Ver esta respuesta y el código de ejemplo relacionado de ella:

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

+0

Gracias por la respuesta! Veo esa respuesta, pero parece discutir la copia de un objeto de un contexto a otro. ¿Se aplica la misma respuesta si quiero usar solo un contexto? – jschmidt

+0

Resulta que esto funciona, pero me costó reajustar mi código de llamada. La URL proporciona el código para realizar la copia, pero en realidad no aborda cómo llamarla de manera adecuada. Estoy agregando mi código en mi pregunta anterior. – jschmidt