Самый простой способ заполнить массив из пользовательского класса? - PullRequest
2 голосов
/ 08 июля 2010

Скажем, у вас есть класс Person (с именем, возрастом и т. Д.) И массив PeopleArray, который имеет несколько отдельных Person.

Какой самый простой способ извлечь имя каждого человека (например) и поместить его в массив. Psuedocode это:

nameArray = every Person's name, from the array PeopleArray

Ответы [ 3 ]

6 голосов
/ 08 июля 2010

Изменить: я нашел лучшее решение, чем ответы, которые я ранее отправил

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];

К сожалению, похоже, что нет эквивалента функции карты.

1 голос
/ 08 июля 2010
NSMutableArray *nameArray = [[NSMutableArray alloc] init];
for (Person *person in peopleArray) {
    [nameArray addObject:person.name];
}
0 голосов
/ 08 июля 2010
NSMutableArray *nameArray = [NSMutableArray arrayWithCapacity:0]; // autoreleased, so no leak
for (Person *peep in peopleArray) {  
    [nameArray addObject:peep.name]; // assumes you made name a property  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...