J'ai ce que je suppose est assez standard de l'installation, avec un pavé MOC qui n'est jamais enregistré (contenant un ensemble d'objets téléchargés à partir du web) et un autre permanent MOC qui persiste objets. Lorsque l'utilisateur sélectionne un objet à partir de scratchMOC à ajouter à sa bibliothèque, je veux 1) supprimer l'objet de scratchMOC et insérez-les dans permanentMOC, ou 2) une copie de l'objet dans permanentMOC. La Base de Données FAQ dit que je peux copier un objet comme ceci:
NSManagedObjectID *objectID = [managedObject objectID];
NSManagedObject *copy = [context2 objectWithID:objectID];
(Dans ce cas, contexte2 serait permanentMOC.) Cependant, quand je fais cela, l'objet copié est reproché; les données sont d'abord en suspens. Lorsqu'il est réglé, plus tard, toutes les valeurs sont nuls; aucune des données (attributs ou relations) à partir de l'original managedObject sont réellement copiés ou référencé. Donc je ne vois aucune différence entre l'utilisation de cette objectWithID: méthode et seulement l'insertion d'un nouvel objet dans permanentMOC à l'aide de insertNewObjectForEntityForName:.
Je me rends compte que je peux créer un nouvel objet dans permanentMOC et copier manuellement chaque paire clé-valeur de l'objet ancien, mais je ne suis pas très heureux avec cette solution. (J'ai un certain nombre de différents objets gérés pour lequel j'ai ce problème, donc je ne veux pas avoir à rédiger et mettre à jour la copie: méthodes pour le tout comme je continue à se développer.) Est-il un meilleur moyen?