如何从Objective C中的字符串中获取对象?

时间:2011-09-24 00:12:38

标签: iphone objective-c xcode

如何根据Objective C中的字符串获取对象?

例如

int carNumber=5;
[@"car%i",carNumber].speed=10;
//should be same as typing car5.speed=10;

当然,这些只是组成对象,但我怎么能根据变量中的内容得到一个对象。

4 个答案:

答案 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