2010-10-22 3 views
1

Dans les données de base existe-t-il un moyen d'avoir une instance d'un objet pour avoir plusieurs liens vers un autre? Ceci est mieux compris avec un exemple. Vous avez un objet panier, ShoppingCart, et vous avez des livres, livre. Comment mettez-vous correctement plusieurs copies du même livre dans le panier?CoreData: plusieurs copies du même article liées à un autre?

Peu importe le nombre de fois que vous exécutez [shoppingCart addBooksObject:book];, il n'apparaîtra qu'une seule fois.

À l'heure actuelle, j'ai une connexion many-to-many entre les deux, mais puisque shoppingCart.books est un ensemble, il supprime les doublons. Comment puis-je contourner cela?

Répondre

1

Vous contournez le problème en utilisant un modèle de données approprié. :-)

Ceci est le problème classique de "l'élément de campagne". Il y a produit, facture et poste. Dans votre cas, le livre est le produit et le panier d'achat la facture. Vous ne mettez pas un produit dans le panier, vous mettez un article (lié au produit) dans le panier. Le (s) élément (s) de ligne appartiennent au panier (un par produit) et contiennent l'attribut de quantité (et peut-être un sous-total calculé sur la base d'une réduction de volume basée sur la quantité). En d'autres termes, vous avez besoin d'une entité intermédiaire (peut-être CartItem?) Pour détenir la relation et la quantité.

+0

Donc, fondamentalement, vous créez vous-même la table de jointure. Cela fonctionnera très bien. Je vous remercie. – RyanJM

+0

Vous vous ferez une grave injustice en pensant à Core Data en termes de bases de données relationnelles. La connaissance est sans aucun doute utile, mais si vous l'appliquez de manière trop rigide, vous manquerez beaucoup des simplifications utiles qu'offre Core Data. –

Questions connexes