2010-05-14 5 views
0

Environnement de travail: OS X 10.6.3, Xcode 3.2.1
Hi! Je travaille sur un projet appelé Rent-a-Flick. Le projet a deux entités: Movie et Client. Entre eux, il y a une relation plusieurs-à-plusieurs.
J'ai 2 tables: une avec les films et une avec les clients. Leur contenu est lié aux contrôleurs de tableau appropriés (pour le film et le client).
Je veux ajouter une troisième table dans laquelle seuls les clients qui ont loué un film sélectionné apparaîtront. Je devrais également pouvoir ajouter/enlever des clients de cette table. Comment puis-je faire cela sans créer de doublons?
Le projet est open source. Je le publierai dès que je ferai une version stable.CoreData RelationShips

Répondre

0

Cette "troisième table" existe déjà implicitement dans votre relation plusieurs-à-plusieurs de données de base. Lorsque vous appelez une méthode comme [aMovie addClientObject:aClient] sur l'un de vos objets de modèle Données de base, l'effet est d'ajouter une ligne à la table de relation film-client. De même, si vous voulez supprimer un client, vous le feriez en utilisant la méthode d'accès aux données de base [aMovie removeClientObject:aClient], et non en manipulant directement la table.

Si vous avez une instance d'un objet Movie, vous pouvez voir quels clients ont loué ce film en faisant simplement référence à la propriété clients de cet objet. Par exemple:

NSArray *rented_clients = [[aMovie.clients] allObjects]; 
+0

Tout d'abord, merci pour votre réponse! Cependant, quand j'essaye de faire cela (du IB: lier la valeur de la colonne au Movie Array Controller, Controller Key à arrangedObjects et Model KeyPath à RentedBy.Name) cela me donne trois "{(" dans cette colonne et je peux Ne les éditez pas Est-ce que je fais quelque chose de mal? –