各キーが配列を指すNSDictionaryがあります。後で、すべての値を1つの配列にマージしたいと思います。 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
[newArray addObjectsFromArray:anArray];
を使用するだけです
上記のベン・ゴットリーブの答えにはいくつかの混乱があります。明確にするために、彼は内側のループの代わりにaddObjectsFromArrayを使用することを提案していますが、Coocooは、すべてのループの代わりとして提案されていると考えているため、混乱しています。 (これを行うと、彼の異議に従って、フラット化されていない配列の配列が実際に残されます。)
これは、明示的なループを必要としない、適度に洗練されたソリューションです。
NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];
ところで、このコードはフラット化された配列に重複を残します。重複を削除する場合は、nionOfArraysの代わりにdistinctUnionOfArraysを使用してください。