我有一个人物对象,其中NSString
属性firstname
,lastname
,birthday
和NSMutableDictionary
具有该人的不同电话号码。< / p>
我在名为NSMutableArray
的{{1}}中添加了不同的人物对象。
答案 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);