假设您有一个Person类(名称,年龄等),以及一个名为PeopleArray的数组,它有几个单独的Person。
提取每个Person的名称(例如)并将其放入数组的最简单方法是什么。 Psuedocode是:
nameArray = every Person's name, from the array PeopleArray
答案 0 :(得分:6)
编辑:我找到了比我之前发布的答案更好的解决方案
NSArray* names = [peopleArray valueForKey: @"name"];
向peopleArray的每个元素发送-name并构建一个新的结果数组
一种方法,使用快速枚举:
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
}