Cómo hacer una copia profunda de NSManagedObject en Core Data

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.

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

Cualquier ayuda es apreciada!

Gracias a TechZen por el enlace. Usé 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];
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta