2010-09-26 3 views
5

J'essaie de créer une copie d'un objet NSManagedObject existant et des sous-objets associés dans les données de base. Je n'arrive pas à trouver un moyen facile de le faire.Comment faire une copie profonde de NSManagedObject dans les données de base

J'ai un NSArrayController qui est rempli à partir d'une base de données de base de données. Je veux prendre l'objet à selectionIndex et faire une copie profonde, en le gardant lié au même objet parent et en copiant tous les objets enfants.

Toute aide est appréciée!

Merci à TechZen pour le lien. J'ai utilisé l'exemple de code de ce site et utilisé ce code d'appel:

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

Répondre

1

C'est assez impliqué. Voir cette réponse et le code de l'échantillon lié de celui-ci:

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

+0

Merci pour la réponse! Je vois cette réponse, mais il semble discuter de la copie d'un objet d'un contexte à un autre. Est-ce que la même réponse s'applique si je veux utiliser un seul contexte? – jschmidt

+0

Il s'avère que cela fonctionne, mais il a fallu un re-jiggering de mon code d'appel. L'URL fournit le code pour effectuer la copie, mais n'indique pas vraiment comment l'appeler de manière appropriée. J'ajoute mon code dans ma question ci-dessus. – jschmidt

Questions connexes