Основни данни и резултати от заявка

Имам два обекта в моя модел, A и B. A има отношение към много към B, а обратното му е отношение към едно към A. Бих искал да извлека резултати от обект B с помощта на A, както следва:

  1. Изпълнете заявка за извличане на обект A с някакъв предикат.
  2. В резултатите, върнати от тази заявка, направете разбивка до всички свързани Bs и тези филтрирайте чрез втори предикат.
  3. Връща всички валидни резултати на обект B.

Разбира се, мога да направя (1) и след това да филтрирам масив от Bs, като използвам втория предикат. Въпреки това знам, че това е неоптимално.

Как мога да направя това най-ефективно, дори с едно извличане и предикат?


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