Базовые данные и запросы результатов запроса

В моей модели есть два объекта: A и B. A имеет отношение "ко-многим" к B, а его обратное отношение - это отношение "ко-многим" к A. Я хотел бы получить результаты объекта B, используя A, следующим образом:

  1. Выполните запрос на выборку объекта A с некоторым предикатом.
  2. В результатах, возвращенных этим запросом, выполните детализацию всех связанных B и отфильтруйте их по второму предикату.
  3. Вернуть все действительные результаты сущности B.

Конечно, я могу сделать (1), а затем отфильтровать массив B, используя второй предикат. Однако я знаю, что это неоптимально.

Как я могу сделать это наиболее эффективно, даже с помощью одной выборки и предиката?


person SK9    schedule 21.05.2012    source источник


Ответы (2)


К сожалению, я не совсем понимаю, о чем вы спрашиваете. Это, безусловно, помогло бы, если бы вы дали более подробную информацию.

Итак, мне остается только догадываться... Имейте в виду, что запрос на выборку может возвращать объект только одного типа. Так что, если вы хотите то, что является многогранной стороной отношений, возьмите это.

Вы можете использовать нотацию «точка» в своем предикате... Я бы также, вероятно, выполнил поиск в обратном направлении...

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employee"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"department.name like 'Support'"];

От отдела к сотруднику существует отношение 1 ко многим. Вышеупомянутое захватывает всех сотрудников, принадлежащих к отделу со словом «Поддержка» в названии.

person Jody Hagins    schedule 21.05.2012

Если у вас уже есть экземпляр A, просто получите доступ к связанным экземплярам B через метод доступа A.

Если вам нужно напрямую получить все B, связанные с конкретным A (в этом случае вы этого не сделаете), вы должны создать запрос на выборку для объекта B с предикатом, основанным на (обратном) отношении Bs к A , (Конкретный синтаксис будет зависеть от имени обратной связи и от того, является ли эта обратная связь отношением к одному или ко многим.)

person Javal Nanda    schedule 21.05.2012