简体   繁体   English

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

[英]How to filter custom object in objective-C

I have a custom object which contains data as: 我有一个自定义对象,其中包含以下数据:

@interface Students : NSObject
{

}
@property (nonatomic,strong) NSString   *ID;
@property (nonatomic,strong) NSString   *FirstName;
@property (nonatomic,strong) NSString   *MiddleName;
@property (nonatomic,strong) NSString   *LastN

I want to filter it according to the last name. 我想根据姓氏对其进行过滤。 For example: I want an array which contains all the details of students having last name="Cena" 例如:我想要一个数组,其中包含姓氏为“ Cena”的学生的所有详细信息

I tried this: 我尝试了这个:

NSMutableArray *arrayToFilter = self.studentList;
NSString *nameformatString = @"LastName contains[c] a";
NSPredicate *namePredicate = [NSPredicate predicateWithFormat:nameformatString];

[arrayToFilter filterUsingPredicate:namePredicate];

When I run my app I am getting this error and my app crashes: 当我运行我的应用程序时,出现此错误,我的应用程序崩溃:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 
'[< Students 0x7fd25e102d20> valueForUndefinedKey:]: 
this class is not key value coding-compliant for the key a.'

I am only able to get last name in array but I know this is wrong. 我只能在数组中获取姓氏,但我知道这是错误的。 How can I sort the custom object based on last name. 如何根据姓氏对自定义对象进行排序。

Code I am using to get lastName: 我用来获取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];
}

Update the predicate to , 将谓词更新为,

NSString *textToMatch = @"a";
NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"LastN CONTAINS[cd] %@", textToMatch];

then 然后

NSMutableArray *arrayToFilter = self.studentList;
NSArray *filteredArray = [arrayToFilter filteredArrayUsingPredicate:namePredicate];

for getting last name only, 仅用于获取姓氏

NSArray *lastNames = [filteredArray valueForKey:@"LastN"];
NSArray *sortedArray = [lastNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM