从自定义类填充数组的最简单方法?

时间:2010-07-08 12:54:15

标签: objective-c nsarray

假设您有一个Person类(名称,年龄等),以及一个名为PeopleArray的数组,它有几个单独的Person。

提取每个Person的名称(例如)并将其放入数组的最简单方法是什么。 Psuedocode是:

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

3 个答案:

答案 0 :(得分:6)

编辑:我找到了比我之前发布的答案更好的解决方案

NSArray* names = [peopleArray valueForKey: @"name"];

向peopleArray的每个元素发送-name并构建一个新的结果数组

Documentation

一种方法,使用快速枚举:

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 :(得分:1)

NSMutableArray *nameArray = [[NSMutableArray alloc] init];
for (Person *person in peopleArray) {
    [nameArray addObject:person.name];
}

答案 2 :(得分:0)

NSMutableArray *nameArray = [NSMutableArray arrayWithCapacity:0]; // autoreleased, so no leak
for (Person *peep in peopleArray) {  
    [nameArray addObject:peep.name]; // assumes you made name a property  
}