質問

Iアレイに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];

他のヒント

<のhref = "http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/nsmutablearray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/addObjectsFromArray:" REL = "noreferrer"> -[NSMutableArray addObjectsFromArray:]

上記のベン・ゴットリーブの答えではいくつかの混乱があります。彼はそれがすべてのループのための代替として提案されていると考えているのでCoocooが混乱しているのに対し、明確にするために、彼は、代わりに、内側のループののaddObjectsFromArrayの使用して提案しています。 (あなたがこれを行う場合、あなたは確かに彼の異議あたりとして配列の平坦化されない配列が残されます。)

ここで明示的なループを必要としない合理的にエレガントな解決策はあります:

NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];

ところで、このコードでは、平坦化配列内の重複を残すだろう。あなたの代わりにdistinctUnionOfArrays を、重複を削除を使用する場合の unionOfArrays の。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top