iphone - 从 NSArray 获取同一生日的名字

标签 iphone ios nsstring nsdate

我有一组以生日和姓名为键的字典。我想检索具有相同生日的名字的值。

    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/

相关文章:

ios - 如何在 Swift 中模仿 safari 的搜索栏 UI/动画?

ios - 如何使用 Swift 中的核心数据正确映射一对多关系?尝试期间出现 NSInvalidArgumentException 错误

ios - 类中的 extern NSString *const。

iphone - 从多个 Controller 访问模型对象?

iphone - 音频直播到互联网

ios - 将 Google Sign In for iOS 与 Swift Package Manager 结合使用

ios - 如何将 NSArray 转换为特定的字符串?

ios 将带有特殊字符的 NSString 转换为 const char

iphone - 获取国家调用前缀

iphone - 有人使用 Snow Leopard beta 和 XCode 3.2 成功构建、提交并让 Apple 接受应用程序吗?