我有一个人对象,它具有该人的不同电话号码的NSString
属性firstname
, lastname
,birthday
和NSMutableDictionary
。
我在NSMutableArray
named中添加了不同的 person 对象personArray
。
我有一个人对象,它具有该人的不同电话号码的NSString
属性firstname
, lastname
,birthday
和NSMutableDictionary
。
我在NSMutableArray
named中添加了不同的 person 对象personArray
。
尝试在. _ NSArray
像这样的东西:
return [personArray[[personArray indexOfObjectPassingTest:^ (id obj, NSUInteger index, BOOL stop) {
return [lastName isEqualToString:[obj lastName]];
}]] phoneNumber];
你明白了。
你应该可以这样做:
-(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 的可变字典。我还假设字典包含多个键和值,其中所有值都是电话号码。
您可以从给定姓氏的数组中获取对象,如下所示:-
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);