2010-07-20 4 views
0

Je, travaillant sur Coredata iphone App TabBar et en passant appdelegate managedObjectContext à tous les points de vue et sous-vues. Dans certains cas, je dois créer un nouvel enregistrement pour l'entité A et l'entité A n'a pas sauvé par l'utilisateur j'ai besoin de créer une autre entité B en utilisant le même contexte partagé. Maintenant, mon problème est que si je sauvegarde le contexte pour l'entité B, alors il sauvera également l'entité A. Je ne veux pas enregistrer l'entité A tant que l'utilisateur n'a pas voulu l'enregistrer.CoreData et Shared ManagedobjectContext dans l'application iphone TabBar

Je ne vois qu'une seule façon d'aller créer un contexte séparé pour l'entité B ou autre chose ....?

Aidez-moi à résoudre ce problème.

Merci,

Répondre

0

Vous pouvez:

  1. Utilisez un autre contexte. Pro: Fait ce que tu veux. Con: La complexité ajoutée et vous ne pouvez pas facilement former des relations.
  2. Créez l'objet A dans un contexte nul en passant une valeur nulle pour le contexte lorsque vous insérez l'objet. Puis ajoutez-le au contexte lorsque vous voulez enregistrer. Pro: Fait ce que tu veux. Con: Identique à ci-dessus et perdre toutes les fonctionnalités fournies par le contexte, telles que annuler le support.
  3. Il suffit de supprimer l'objet-A est l'utilisateur décide qu'ils ne veulent pas conserver. Pro: Simple et sûr. Con: Les relations dans le graphe d'objets doivent permettre à l'objet A d'être supprimé, c'est-à-dire que les autres objets que vous souhaitez conserver ne peuvent pas exiger que l'objet A existe. Vous devez garder cela à l'esprit lors de la conception du modèle.

Je vais presque toujours avec (3). C'est la méthode la plus simple et la plus sûre de loin. Comme il imite ce que l'utilisateur est en train de faire, c'est-à-dire créer un objet de données et décider ensuite de le jeter, c'est également une bonne pratique de conception.

+0

Merci pour votre aide. Je comprends vos suggestions, mais dans mon cas je dois donner Look-up et permettre à l'utilisateur d'ajouter de nouvelles entités à la volée en ajoutant un nouvel enregistrement pour l'objet A. Comme je le disais avant l'objet A est la table principale . Ainsi, tout en ajoutant un nouvel enregistrement dans la table principale A, l'utilisateur devrait pouvoir sélectionner les enregistrements de la table enfant et également être en mesure de créer de nouveaux enregistrements s'il n'existe pas. Mon problème est d'abord que je crée le nouvel objet A et que j'autorise ensuite l'utilisateur à ajouter un nouvel objet enfant B à la volée. Pour cela j'ai trouvé la solution 1 (contexte séparé) fonctionnant dans mon cas. – AmitSri