NSMutableArray搜索字符串

时间:2013-09-13 21:30:13

标签: objective-c

我有一个人物对象,其中NSString属性firstnamelastnamebirthdayNSMutableDictionary具有该人的不同电话号码。< / p>

我在名为NSMutableArray的{​​{1}}中添加了不同的人物对象。

3 个答案:

答案 0 :(得分:1)

尝试在NSArray上使用this方法。像这样:

return [personArray[[personArray indexOfObjectPassingTest:^ (id obj, NSUInteger index, BOOL stop) {
    return [lastName isEqualToString:[obj lastName]];
}]] phoneNumber];

你明白了。

答案 1 :(得分:0)

你应该能够这样做:

-(NSArray *) phoneNumberFor:(NSString *)lastName{
NSInteger indx = [self.personArray indexOfObjectPassingTest:^BOOL(Person *aPerson, NSUInteger idx, BOOL *stop) {
    return [aPerson.lastname isEqualToString:lastName];
}];
if (indx != NSNotFound) {
    return [self.personArray[indx] phoneNumbers].allValues;
}else{
    return nil;
}

}

在这个例子中,我假设一个名为personArray的数组属性,一个用于person对象的类名“Person”,以及一个名为phoneNumbers的可变字典。我还假设字典包含几个键和值,其中所有值都是电话号码。

答案 2 :(得分:0)

您可以从给定姓氏的数组中获取对象,如下所示: -

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"lastname == '%@'", lastname];
NSArray *foundPersonArray = [personArray filteredArrayUsingPredicate:predicate];
NSLog("found person object = %@",foundPersonArray);

但是如果你想从数组中搜索同一姓氏的多个对象,那么你可以这样做: -

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"lastname LIKE[c] %@", lastname];
NSArray *foundPersonArray = [personArray filteredArrayUsingPredicate:predicate];
NSLog("found person object = %@",foundPersonArray);