假設你有一個Person Person(名字,年齡等)和一個名爲PeopleArray的數組,其中有幾個Person。從自定義類中填充數組的最簡單方法?
什麼是提取每個人的名字(例如)並將其放入數組中的最簡單的方法。 僞代碼是:
nameArray = every Person's name, from the array PeopleArray
假設你有一個Person Person(名字,年齡等)和一個名爲PeopleArray的數組,其中有幾個Person。從自定義類中填充數組的最簡單方法?
什麼是提取每個人的名字(例如)並將其放入數組中的最簡單的方法。 僞代碼是:
nameArray = every Person's name, from the array PeopleArray
編輯:我發現比我以前發佈的
NSArray* names = [peopleArray valueForKey: @"name"];
發送到-name的peopleArray每個元素的答案一個更好的解決方案,並建立了新的結果排列
一種方法,使用快速列舉:
NSMutableArray* nameArray = [[NSMutableArray alloc] init];
for (Person* person in peopleArray)
{
[nameArray addObject: [person name]];
}
的另一種方式,區分我的回答從相同的一個貼礦:-)
創建之前稱爲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];
令人失望的是,似乎是沒有等同於地圖功能。
NSMutableArray *nameArray = [[NSMutableArray alloc] init];
for (Person *person in peopleArray) {
[nameArray addObject:person.name];
}
NSMutableArray *nameArray = [NSMutableArray arrayWithCapacity:0]; // autoreleased, so no leak
for (Person *peep in peopleArray) {
[nameArray addObject:peep.name]; // assumes you made name a property
}
這真酷!總是有新東西來學習SO。 – willc2 2010-07-09 07:49:15