假设我有很多对象:
@interface City : NSObject {
NSString *name;
NSString *country;
int yearFirstTimeVisited;
}
存储在一个对象数组中:
city = [[City alloc] initWithName:@"London":@"UK",2002];
[pickerValues addObject:city];
city = [[City alloc] initWithName:@"Paris":@"France",2003];
[pickerValues addObject:city];
city = [[City alloc] initWithName:@"LA":@"USA",2003];
[pickerValues addObject:city];
现在我想把城市加载到捡拾轮。当然我可以手动完成:
pickerValues = [[NSMutableArray alloc] initWithObjects:@"London",@"Paris", @"LA",nil];
但这导致我必须在代码中维护两组数据。我确信有更好的选择。我在网上搜索过,但找不到任何东西。
由于
答案 0 :(得分:3)
更好的是,使用Key-Value Coding。 -[NSArray valueForKey:]
将为您完成循环。
NSArray* pickerNames = [pickerValues valueForKey:@"name"];
答案 1 :(得分:2)
您可以为选择器创建一个新数组。
NSMutableArray *pickerNames = [NSMutableArray arrayWithCapacity:[pickerValues count]];
for(City *city in pickerValues){
[pickerNames addObject:[city name]];
}
最佳做法是为自定义类添加前缀,例如VCCity
,而不只是City
。我从您的用户名中选择VC
,但从项目名称中选择字母很常见。