Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从NSArray取同一生日的名字_Iphone_Ios_Nsstring_Nsdate - Fatal编程技术网

Iphone 从NSArray取同一生日的名字

Iphone 从NSArray取同一生日的名字,iphone,ios,nsstring,nsdate,Iphone,Ios,Nsstring,Nsdate,我有一系列的字典,以生日和名字为键。我想检索具有相同生日的名称的值 for (NSDictionary *contactDict in contactList) { NSString *birthdayStr = [contactDict objectForKey:BIRTHDAY_KEY]; } 我应该怎么做才能得到相同生日的名字数组 这就是你要找的吗 for (NSDictionary *contactDict in contactList) { N

我有一系列的字典,以生日和名字为键。我想检索具有相同生日的名称的值

    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);
}
示例数据的输出:


这就是你要找的吗

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);
}
示例数据的输出:


你说同样的生日是什么意思?比如,当你有一个生日字符串时,得到它对应的所有名字?或者得到一个生日在某处重复的所有名字的列表?假设Dict的值为1/12/13,a;1/12/13,B;2/12/13,C。那么我需要一个数组,用于1/12/13和2/12/13,作为(A,B)和C。你说的相同的生日是什么意思?比如,当你有一个生日字符串时,得到它对应的所有名字?或者得到一个生日在某处重复的所有名字的列表?假设Dict的值为1/12/13,a;1/12/13,B;2/12/13,C。然后我需要一个1/12/13和2/12/13的数组作为(A,B)和C。Thnx martin。这正是我要找的…多谢了Hnx martin。这正是我要找的…多谢了