Вопрос

У меня есть 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];

Другие советы

В приведенном выше ответе Бенна Готлиба есть некоторая путаница.Чтобы внести ясность, он предлагает использовать Добавить объекты из массива вместо внутреннего цикла, в то время как Coocoo сбит с толку, потому что он думает, что это предлагается в качестве замены ВСЕГО цикла.(Если вы сделаете это, вы действительно останетесь с неположенным массивом массивов в соответствии с его возражением.)

Вот достаточно элегантное решение, которое не требует какого-либо явного зацикливания:

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

кстати, этот код оставит дубликаты в сплющенном массиве.Если вы хотите удалить дубликаты, используйте Различение множеств вместо того , чтобы Объединение группировок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top