[英]How to filter custom object in objective-C
我有一个自定义对象,其中包含以下数据:
@interface Students : NSObject
{
}
@property (nonatomic,strong) NSString *ID;
@property (nonatomic,strong) NSString *FirstName;
@property (nonatomic,strong) NSString *MiddleName;
@property (nonatomic,strong) NSString *LastN
我想根据姓氏对其进行过滤。 例如:我想要一个数组,其中包含姓氏为“ Cena”的学生的所有详细信息
我尝试了这个:
NSMutableArray *arrayToFilter = self.studentList;
NSString *nameformatString = @"LastName contains[c] a";
NSPredicate *namePredicate = [NSPredicate predicateWithFormat:nameformatString];
[arrayToFilter filterUsingPredicate:namePredicate];
当我运行我的应用程序时,出现此错误,我的应用程序崩溃:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[< Students 0x7fd25e102d20> valueForUndefinedKey:]:
this class is not key value coding-compliant for the key a.'
我只能在数组中获取姓氏,但我知道这是错误的。 如何根据姓氏对自定义对象进行排序。
我用来获取lastName的代码:
names = [[NSMutableArray alloc]init];
for (int i = 0; i < [self.studentList count] ; i++)
{
Students * studentsObj = (Students*)[self.studentList objectAtIndex:i];
[names addObject:studentsObj.LastName];
}
将谓词更新为,
NSString *textToMatch = @"a";
NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"LastN CONTAINS[cd] %@", textToMatch];
然后
NSMutableArray *arrayToFilter = self.studentList;
NSArray *filteredArray = [arrayToFilter filteredArrayUsingPredicate:namePredicate];
仅用于获取姓氏
NSArray *lastNames = [filteredArray valueForKey:@"LastN"];
NSArray *sortedArray = [lastNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.