Ответ 1
Просто используйте [newArray addObjectsFromArray:anArray];
У меня есть NSDictionary, где каждый ключ указывает на массив. Позднее я хочу объединить все значения в один массив. Есть ли способ использовать 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];
В ответе Бенна Готлиба есть некоторая путаница. Чтобы уточнить, он предлагает использовать addObjectsFromArray вместо внутреннего цикла, тогда как Coocoo запутан, потому что он считает, что он предлагается в качестве замены для ВСЕХ циклов. (Если вы это сделаете, вы действительно останетесь с незакрепленным массивом массивов в соответствии с его возражением.)
Вот достаточно элегантное решение, которое не требует явного цикла:
NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];
btw этот код оставит дубликаты в сплющенном массиве. Если вы хотите удалить дубликаты, используйте distinctUnionOfArrays вместо unionOfArrays.