我有一个NSDictionary,其中每个键都指向一个数组。我后来想要将所有值合并到一个数组中。有没有办法使用API来做一些比说更有效的事情:
NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
start inner loop on objects in anArray
add objectAtIndex to newArray
答案 0 :(得分:60)
只需使用[newArray addObjectsFromArray:anArray];
答案 1 :(得分:21)
答案 2 :(得分:19)
Benn Gottlieb上面的回答有些混乱。为了澄清,他建议使用 addObjectsFromArray 而不是内循环,而Coocoo很困惑,因为他认为它被建议作为所有循环的替代。 (如果你这样做,根据他的反对意见,你确实会留下一个不平整的数组阵列。)
这是一个相当优雅的解决方案,不需要任何明确的循环:
NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];
顺便说一下,这段代码会在flattened数组中留下重复数据。如果要删除重复项,请使用 distinctUnionOfArrays 而不是 unionOfArrays 。