Изменить: я нашел лучшее решение, чем ответы, которые я ранее отправил
NSArray* names = [peopleArray valueForKey: @"name"];
Отправляет -name каждому элементу peopleArray и создает новый массив результатов
Документация
Один способ, используйте быстрое перечисление:
NSMutableArray* nameArray = [[NSMutableArray alloc] init];
for (Person* person in peopleArray)
{
[nameArray addObject: [person name]];
}
Другой способ, чтобы отличить мой ответ от идентичного, отправленного непосредственно перед моим:-)
Создайте метод Person с именем addNameToArray: и используйте makeObjectsPerformSelector:
// Person.m
-(void) addNameToArray: (id) aMutableArray
{
[aMutableArray addObject: [self name]];
}
// where you want to add the names
NSMutableArray* nameArray = [[NSMutableArray alloc] init];
[peopleArray makeObjectsPerformSelector: @selector(addNameToArray:) withObject: nameArray];
К сожалению, похоже, что нет эквивалента функции карты.