我有一组以生日和姓名为键的字典。我想检索具有相同生日的名字的值。
for (NSDictionary *contactDict in contactList) {
NSString *birthdayStr = [contactDict objectForKey:BIRTHDAY_KEY];
}
我应该怎么做才能获得相同生日的名字数组。
最佳答案
这是您要找的吗?
for (NSDictionary *contactDict in contactList) {
NSString *birthdayStr = [contactDict objectForKey:BIRTHDAY_KEY];
// indexes of all array objects with same birthday:
NSIndexSet *matching = [contactList indexesOfObjectsPassingTest:^BOOL(NSDictionary *contactDict, NSUInteger idx, BOOL *stop) {
return [[contactDict objectForKey:BIRTHDAY_KEY] isEqualToString:birthdayStr];
}];
NSArray *matchingNames = [[contactList objectsAtIndexes:matching] valueForKey:NAME_KEY];
NSLog(@"%@", matchingNames);
}
或者,如果您只想为每个不同的生日使用一个姓名数组:
// Set of all distinct birthdays:
NSSet *allBirthdays = [NSSet setWithArray:[contactList valueForKey:BIRTHDAY_KEY]];
for (NSString *birthdayStr in allBirthdays) {
NSLog(@"birthday: %@", birthdayStr);
NSIndexSet *matching = [contactList indexesOfObjectsPassingTest:^BOOL(NSDictionary *contactDict, NSUInteger idx, BOOL *stop) {
return [[contactDict objectForKey:BIRTHDAY_KEY] isEqualToString:birthdayStr];
}];
NSArray *matchingNames = [[contactList objectsAtIndexes:matching] valueForKey:NAME_KEY];
NSLog(@"names: %@", matchingNames);
}
示例数据的输出:
birthday: 1/12/13
names: (
A,
B
)
birthday: 2/12/13
names: (
C
)
关于iphone - 从 NSArray 获取同一生日的名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15464396/