2014-01-10 3 views
0

У меня есть две сущности, студент и курс, где каждый из них имеет отношение «многие» к другому (то есть, у Студента 0 или более курсов, а курс имеет 0 или более учеников).NSPredicate для получения всех студентов с определенным названием курса?

Мне нужно получить всех студентов, которые зачислены на курс. Мне также необходимо получить все Курсы, в которых зарегистрирован данный Студент (по первому имени).

Псевдо-предикат будет: все студенты, у которых есть курс, чье имя равно курсуName.

Итак, мой вопрос состоит из двух частей:

  1. Что является действительным NSPredicate для получения всех студентов с определенным названием курса?
  2. Что такое действительный NSPredicate для получения всех курсов, в которых зарегистрирован студент с определенным именем FirstName.

Для справки, здесь мои объекты:

enter image description here

+0

В подклассе 'NSManagedObject' будет существовать свойство' NSSet', которое возвращает студентов для объекта курса и курсов для объекта-ученика. – Akhilrajtr

+0

, если вас устраивает любой из ответов, пожалуйста, отметьте их правильно. :) – santhu

+0

@santhu сделаю. нужно сначала попробовать их. благодаря! – BigSauce

ответ

1

1) Используйте это, чтобы фильтровать массив students, которые находятся в определенном курсе с courseName:

[NSPredicate predicateWithFormat:@"ANY courses.name like %@", courseName] 

В качестве альтернативы, если у вас уже есть объект coursename уникален по вызову course объектов), лет и можно просто получить все его студентов путем доступа к его свойству students, т.е.

course.students // returns an NSSet/NSOrderedSet based on your model setup 

2) Используйте это, чтобы фильтровать массив courses, которые имеют студента с определенным firstName:

[NSPredicate predicateWithFormat:@"ANY students.firstName like %@", firstName] 

Примечание: NSSet и NSOrderedSet имеют метод array, чтобы получить массив объектов.

См. Также документы на NSPredicate под кодом Использование предикатов с ключами.

1

Что такое действительный NSPredicate для получения всех студентов с определенным названием курса?

[NSPredicate predicateWithFormat:@"name= %@", courseName]; 

Использование выше предикат для выборки определенного курса, а имеет имя = courseName, Set, что предикат на «Курс» сущности не «Student» лица.
Если вы выполняете над запросом выборки, у вас будет массив курсов, имеющих это имя курса.

Course *course = [fetchedResults objectAtIndex:0]; 

Теперь, чтобы получить все студент в этом курсе,

NSArray *students =[course.students allObjects]; 

Теперь студенты является массивом "Student" объекты сущностей.

Аналогичным образом, Что такое действительный NSPredicate для получения всех курсов, в которых зарегистрирован студент с определенным именем FirstName.

[NSPredicate predicateWithFormat:@"firstName = %@", name]; 

Использование выше предиката для извлечения конкретного студента, который имеет имя = ПгвЬЫате; Установить, что предикат на «Студенческой» сущности.
Если вы выполняете над запросом выборки, у вас будет массив студентов, имеющих первое имя.

Student *student = [fetchedResults objectAtIndex:0]; 

Теперь, чтобы получить все курсы для этого студента,

NSArray *courses =[student.courses allObjects]; 

Теперь курсы является массивом «Курс» объектов сущностей.

Надеюсь, это поможет.

Смежные вопросы