如何根据Objective C中的字符串获取对象?
例如
int carNumber=5;
[@"car%i",carNumber].speed=10;
//should be same as typing car5.speed=10;
当然,这些只是组成对象,但我怎么能根据变量中的内容得到一个对象。
答案 0 :(得分:4)
如果您关注Key-Value Coding,那么就像以下一样简单:
NSString *myValue = [NSString stringWithFormat:@"car%@", carNumber];
id myValue = [myClass valueForKey:myValue];
答案 1 :(得分:0)
你做不到。编译代码时,变量名称将不再是您指定的名称。 car5
不是,也从未成为字符串。
更好的策略是拥有一个汽车对象数组,然后指定索引。在C风格中(其中carType
是每辆车的类型):
carType carArray[5];
//! (Initialize your cars)
int carNumber= 5;
carArray[carNumber].speed= 10;
在Objective-C中,如果你的车是物体:
NSMutableArray* carArray= [[NSMutableArray alloc] init];
//! (Initialize your cars and add them to the array)
int carNumber= 5;
carType car= [carArray objectAtIndex:carNumber];
car.speed= 10;
答案 2 :(得分:0)
int carNumber = 5;
NSString *className = [NSString stringWithFormat:@"car%d", carNumber];
Class carClass = [[NSBundle mainBundle] classNamed:className];
if (carClass) {
id car = [[carClass alloc] init];
[car setValue:[NSNumber numberWithInt:10] forKey:@"speed"];
}
但是存在诸如保存试用汽车类实例以供以后访问的问题,可能会将其添加到NSMutableArray
。
答案 3 :(得分:-1)
为什么不将汽车对象存储在NSArray
?