Merging NSArrays in Objective-C
-
16-09-2019 - |
Frage
Ich habe ein NSDictionary wo jede Taste auf ein Array. Ich möchte später alle Werte in einem Array verschmelzen. Gibt es eine Möglichkeit, die API zu nutzen, um etwas effizienter als zu tun, sagen:
NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
start inner loop on objects in anArray
add objectAtIndex to newArray
Lösung
Verwenden Sie einfach [newArray addObjectsFromArray:anArray];
Andere Tipps
Es gibt einige Verwirrung in Benn Gottlieb Antwort oben. Um zu klären, er schlägt mit addObjectsFromArray anstelle der inneren Schleife, während Coocoo verwirrt ist, weil er denkt, wird es als Ersatz für die ganzen Looping vorgeschlagen werden. (Wenn Sie dies tun, werden Sie in der Tat mit einem abgeflachte Array von Arrays gemäß seinem Einwand gelassen werden.)
Hier ist eine recht elegante Lösung, die kein explizites Looping erfordert:
NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];
btw wird dieser Code Duplikate in dem abgeflachten Array lassen. Wenn Sie möchten, um Duplikate zu entfernen, verwenden Sie distinctUnionOfArrays statt unionOfArrays .