2010-01-06 4 views
2

Je travaille avec une table de jointure intermédiaire dans Core Data similaire à l'exemple d'amis du Core Data Programming Guide d'Apple. Désolé, impossible de publier des photos en raison de l'absence de points de réputation. C'est une entité amis avec des relations à FriendInfo intermédiaire, avec des relations d'amis et d'amis. Le lien suivant le décrit.Liste des amis communs dans les données de base

link text

Comment puis-je obtenir une liste des amis communs, à savoir les personnes à la fois A et l'action B comme des amis? Je cherche à mettre cela dans une vue de la table de l'application iPhone.

Répondre

2

La réponse est presque là dans l'url de documentation que vous avez donnée. Disons qu'il y a deux personnes personA et personB. Vous pouvez obtenir leurs amis respectifs par

NSSet *friendsOfPersonA = [personA valueForKeyPath:@"friends.friend"]; 
NSSet *friendsOfPersonB = [personB valueForKeyPath:@"friends.friend"]; 

Ne une intersection ensemble pour trouver des amis communs

NSSet *commonFriends = [[NSMutableSet alloc] initWithSet:friendsOfPersonA]; 
[commonFriends intersectSet:friendsOfPersonB]; 

L'ensemble commonFriends devrait être ce que vous voulez.

Remarque: L'exemple Apple donne inclut une propriété supplémentaire comme befriendedBy. Habituellement, ce n'est pas le cas dans les réseaux sociaux en ligne tels que Facebook où l'amitié est mutuelle. Mais si vous vous engagez dans cette voie et que vous voulez compter une amitié seulement lorsque deux personnes sont des amis l'un de l'autre, alors c'est un pas de plus pour y arriver. Pour trouver les amis d'une personne dans ce cas, vous feriez une intersection définie pour les amis d'une personne et ceux qui se sont liés d'amitié avec lui.

+0

Merci pour la réponse rapide - l'intersection était ce qui me manquait – user244434

Questions connexes