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
Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top