2016-12-09 3 views
1

У меня есть массив объектов, называемый Студент. Где каждый Студент имеет другой массив объектов, называемый Тема. Теперь я хочу отфильтровать свой массив студентов с Тема Имя. Пример объекта ниже:NSPredicate в массиве пользовательского объекта, который содержит другой массив пользовательского объекта

@interface Student : NSObject 

@property (nonatomic, assign) NSInteger studentId; 
@property (nonatomic, strong) NSString *name; 
@property (nonatomic, strong) NSString *class; 
@property (nonatomic, strong) NSString *section; 
@property (nonatomic, strong) NSArray *arraySubject; 

@end 

Где ArraySubject содержит массив объектов «Тема»

@interface Subject : NSObject 

@property (nonatomic, assign) NSInteger subjectId; 
@property (nonatomic, strong) NSString *name; 
@property (nonatomic, strong) NSString *languageMedium; 
@property (nonatomic, strong) NSString *creditHours; 

@end 

То, что я хочу, чтобы обеспечить «Subject Name» и фильтровать мой массив студентов с тем, что имя субъекта.

Надеюсь, я очистил свой вопрос.

ответ

6

Для этого используйте ANY.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY arraySubject.name = %@", subjectName]; 
NSArray *filterArray = [studentArray filteredArrayUsingPredicate:predicate]; 

Вы также можете использовать CONTAINS[c], если вы не хотите, чтобы соответствовать точному Subjectname с темой.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY arraySubject.name CONTAINS[c] %@", subjectName]; 
+0

Это работает (Y). Спасибо –

+0

@AzeemAkram Приветствуем партнера :) –

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