Pergunta

Eu tenho um NSDictionary onde cada chave aponta para uma cadeia. Mais tarde deseja mesclar todos os valores em um array. Existe uma maneira de usar a API para fazer algo mais eficiente do que dizer:

NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
   start inner loop on objects in anArray
     add objectAtIndex to newArray
Foi útil?

Solução

Apenas uso [newArray addObjectsFromArray:anArray];

Outras dicas

Existe alguma confusão na resposta de Benn Gottlieb acima. Para esclarecer, ele está sugerindo usando addObjectsFromArray em vez do circuito interno, enquanto Coocoo está confuso porque ele acha que está sendo sugerido como um substituto para todos os looping. (Se você fizer isso, você vai realmente ficar com um array de arrays não nivelado como por sua objeção.)

Aqui está uma solução razoavelmente elegante, que não requer qualquer looping explícito:

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

btw este código vai deixar duplicados na matriz achatada. Se você quiser remover duplicatas, use distinctUnionOfArrays em vez de unionOfArrays .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top