Является ли это лучшей практикой?
Я не думаю, что эта проблема относится к категории "ситуаций, для которых была создана лучшая практика", но кажется, чторазумное решение.
Если да, то как написать [aUser valueForKeyPath: ...];чтобы получить его / ее последователей или друзей (за которыми следят).
Допустим, у Following
есть свойство follower
для человека, выполняющего следующие действия, и свойство leader
для человекасоблюдаетсяКроме того, User
имеет свойство leads
для отношений Following
с людьми, которые следуют за пользователем, и свойство follows
для отношений Following
с людьми, за которыми следует пользователь.Наконец, User
также имеет свойство name
.
Учитывая все это, чтобы получить имена подписчиков aUser, вы можете сказать:
NSSet * последователей = [aUser valueForKeyPath: @"lead.follower.name"];
и для получения имен людей aUser следует:
NSSet * leader = [aUser valueForKeyPath: @ "follow.leader.name"];
Поначалу кажется немного странным, что вы получаете наборы из этих ключевых путей, поскольку последние два ключа в каждом пути являются единичными.Однако, поскольку свойство leads
возвращает набор объектов Following
, leads.follower
возвращает набор, содержащий пользователей для каждого из этих объектов, а leads.follower.name
возвращает набор, содержащий имена пользователей этих объектов.