Fusion de NSArrays en Objective-C
-
16-09-2019 - |
Question
J'ai un NSDictionary où chacun des points clés à un tableau. Je veux plus tard fusionner toutes les valeurs dans un tableau. Y at-il un moyen d'utiliser l'API pour faire quelque chose de plus efficace que de dire:
NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
start inner loop on objects in anArray
add objectAtIndex to newArray
La solution
Il suffit d'utiliser [newArray addObjectsFromArray:anArray];
Autres conseils
Il y a une certaine confusion dans la réponse de Benn Gottlieb ci-dessus. Pour clarifier, il suggère en utilisant addObjectsFromArray au lieu de la boucle intérieure, alors que Coocoo est confus parce qu'il pense qu'il est proposé en remplacement pour tous les looping. (Si vous faites cela, vous serez en effet à gauche avec un tableau de tableaux comme non aplati par son opposition.)
Voici une solution raisonnable élégante qui ne nécessite pas de mise en boucle explicite:
NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];
BTW ce code laissera des doublons dans le tableau aplaties. Si vous voulez supprimer les doublons, utilisez distinctUnionOfArrays au lieu de unionOfArrays .