我有一个对象的 NSArray,其属性包括 firstName、lastName、clientID 等,我想根据搜索关键字对数组执行搜索。必须根据名字和姓氏属性检查此关键字,并返回原始数组的子集,该子集仅包含名字/姓氏包含搜索词的对象。有没有有效/快速的方法来做到这一点?
问问题
3524 次
3 回答
11
作为第二个想法,我认为-filteredArrayUsingPredicate:
可能对你更好。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", @"firstName", @"Bob"];
NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];
这会从数组中返回名字为“Bob”的对象的子数组。
于 2012-10-17T14:26:33.560 回答
7
我想你在寻找-indexesOfObjectsPassingTest:
NSIndexSet *indexSet = [array indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
MyObject *myObject = (MyObject *)obj;
return [myObject.firstName isEqualToString:@"Bob"];
}];
这将返回数组中第一个名称为“Bob”的所有对象的索引集。
于 2012-10-17T14:17:08.880 回答
0
另一种方法返回一个只包含匹配对象的新数组:
-(NSArray *)matchingClientsFromArray:(NSArray *)objects withFirstName:(NSString *)firstName andLastName:(NSString *)lastName{
NSMutableArray *objectArray = [NSMutableArray new];
for (Client *client in objectArray){
if ([client.firstName isEqualToString:firstName] &&
[client.lastName isEqualToString:lastName]) {
[objectArray addObject:client];
}
}
return [objectArray copy];
}
于 2012-10-17T14:26:44.477 回答