あなたが探しているものを正確に理解しているかどうかはわかりませんが、ここにあなたが説明していることに近いことをする小さなプログラムがあります. この質問は、あなたが付けたタグとは何の関係もないことに注意してください。アルゴリズムの基本問題です。
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSArray *array = @[
@{@"key1": @"value1", @"key2": @"value2", @"key3": @"value3"},
@{@"key1": @"value1", @"key2": @"value5", @"key3": @"value6"},
@{@"key1": @"value2", @"key2": @"value2", @"key3": @"value9"}
];
NSMutableDictionary *result = [NSMutableDictionary dictionary];
for (NSDictionary *dict in array) {
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
NSMutableArray *valuesForKey = [result objectForKey:key];
if (valuesForKey == nil) {
valuesForKey = [NSMutableArray array];
[result setObject:valuesForKey forKey:key];
}
[valuesForKey addObject:value];
}];
}
for (id key in result.allKeys) {
NSMutableArray *valuesForKey = [result objectForKey:key];
[valuesForKey sortUsingSelector:@selector(compare:)];
}
NSLog(@"Dictionary: %@", result);
}
return 0;
}
出力は次のとおりです。
2012-09-24 20:44:02.509 Dummy[68684:303] Dictionary: {
key1 = (
value1,
value1,
value2
);
key2 = (
value2,
value2,
value5
);
key3 = (
value3,
value6,
value9
);
}