2010-01-06 2 views
2

Я работаю с промежуточной таблицей соединений в Core Data, аналогичной примеру друзей из Руководства по программированию основных данных Apple. Извините, не удалось опубликовать фотографии из-за отсутствия точек репутации. Его организация друзей с отношениями к промежуточному соединению FriendInfo, с отношениями друзей и знакомой. Следующая ссылка описывает его.Список общих друзей в Core Data

link text

Как бы я получить список общих друзей, т.е. лиц, как человек А и Person долю B в качестве друзей? Я хочу положить это в представление таблицы приложений iPhone.

ответ

2

Ответ почти есть в документе, который вы указали. Предположим, что есть два человека personA и personB. Вы можете получить их соответствующих друзей,

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

ли множество пересечений, чтобы найти общие друзья

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

Множество commonFriends должно быть то, что вы хотите.

Примечание: пример Apple дает дополнительное свойство, такое как befriendedBy. Обычно это не так в онлайн-социальных сетях, таких как Facebook, где дружба взаимна. Но если вы должны пойти по этой дороге и хотите посчитать дружбу только тогда, когда двое - друзья друг друга, то это еще один дополнительный шаг. Чтобы найти друзей человека в этом случае, вы сделаете набор пересечений для друзей человека и тех, кто подружился с ним.

+0

Спасибо за быстрый ответ - пересечение было тем, что мне не хватало – user244434