Как получить относительные оценки из подмножества сущностей в CoreData - PullRequest
0 голосов
/ 24 апреля 2010

Извините за длинный вопрос, но я думаю, что он нуждается в некотором прошлом: S

У меня есть следующая модель в CoreData:

Модель http://mikeholman.org/model.png

Гость может иметь любое количество баллов в своих отношениях. Оценка может иметь максимум двух гостей в отношениях с гостями.

Для каждой пары гостевых сущностей, которые я моделирую, есть сущность Score со значением, указывающим, насколько хорошо они ладят друг с другом.

В моем интерфейсе я хочу, чтобы пользователи могли выбрать любого гостя из списка, а затем просмотреть второй список всех других гостей и счет, который связывает каждого из этих гостей с первоначально выбранный гость нравится так:

альтернативный текст http://mikeholman.org/interface.png

Достать массив всех гостей для первой таблицы (tv1) достаточно просто. В настоящее время для второй таблицы я извлекаю всех других гостей, отфильтровывая этот массив, используя следующий предикат:

[NSPredicate predicateWithFormat:
    [NSString stringWithFormat:@"not displayName == '%@'", 
        [[allGuests objectAtIndex:[tv1 selectedRow]] valueForKey:@"displayName"]]];

Что работает нормально, но моя проблема в том, чтобы узнать, как отобразить правильное значение Score.value. Я чувствую, что вместо этого я должен использовать отношение выбранных Guest.scores для заполнения второго табличного представления, но я не уверен, как это сделать. Любые указатели приветствуются - спасибо!

1 Ответ

0 голосов
/ 26 апреля 2010

Я наконец-то понял это для себя. Вот как я это сделал:

  1. Сохранить ссылку на выбранную гостевую сущность из первого табличного представления.
  2. Использовать запрос всех объектов Score из ManagedObjectContext, отфильтрованного с помощью NSPredicate:

    @ "ANY guest.displayName =% @", [guestA displayName]

  3. Используйте возвращенные объекты Score для получения значения

  4. Извлечение гостей для каждого отдельного объекта Score из (3), отфильтрованного с помощью другого NSP-предиката:

    @ "NOT displayName =% @", [guestA displayName]

  5. Полученный отфильтрованный NSMutableSet должен содержать гостя, связанного с первым выбранным гостем через текущий счет, так как отношение Score.ghest имеет максимум 2 гостевых объекта. Поэтому исключая известного выбранного Гостя, дается требуемый ответ.

...