如何在 objective-C 中过滤自定义对象

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.'

我只能获取数组中的姓氏,但我知道这是错误的。如何根据姓氏对自定义对象进行排序。

我用来获取姓氏的代码:

  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:)];