Objective-Cの中にマージNSArrays
-
16-09-2019 - |
質問
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 の。
所属していません StackOverflow