1

可以说我有许多对象:

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

但这是我必须在代码中维护的两组数据的结果。我确信有更好的选择。我在网上搜索过,但找不到任何东西。

谢谢

4

2 回答 2

3

更好的是,使用键值编码-[NSArray valueForKey:]会为你做循环。

NSArray* pickerNames = [pickerValues valueForKey:@"name"];
于 2012-04-12T17:09:04.603 回答
2

您可以为选择器创建一个新数组。

NSMutableArray *pickerNames = [NSMutableArray arrayWithCapacity:[pickerValues count]];
for(City *city in pickerValues){
    [pickerNames addObject:[city name]];
}

最好的做法是为您的自定义类添加前缀,VCCity而不仅仅是City. 我VC是从您的用户名中挑选的,但通常会从项目名称中挑选字母。

于 2012-04-12T08:52:14.680 回答