Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何从目标C中的字符串中获取对象?_Iphone_Objective C_Xcode - Fatal编程技术网

Iphone 如何从目标C中的字符串中获取对象?

Iphone 如何从目标C中的字符串中获取对象?,iphone,objective-c,xcode,Iphone,Objective C,Xcode,如何从Objective C中的字符串获取基于对象的对象 比如说 int carNumber=5; [@"car%i",carNumber].speed=10; //should be same as typing car5.speed=10; 哦,当然,这些只是虚构的对象,但是如何根据变量中的内容获取对象。你不能。编译代码时,变量的名称将不再是您指定的名称car5不是而且从来都不是字符串 更好的策略是拥有一个car对象数组,然后指定索引。C样式(其中,carType是每辆车的类型): 在Ob

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

比如说

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

哦,当然,这些只是虚构的对象,但是如何根据变量中的内容获取对象。

你不能。编译代码时,变量的名称将不再是您指定的名称
car5
不是而且从来都不是字符串

更好的策略是拥有一个car对象数组,然后指定索引。C样式(其中,
carType
是每辆车的类型):

在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;

为什么不将汽车对象存储在一个
NSArray

如果您遵循以下步骤,那么这很容易:

NSString *myValue = [NSString stringWithFormat:@"car%@", carNumber];
id myValue = [myClass valueForKey:myValue];

但也存在一些问题,例如保存try car类实例以供以后访问,或者将其添加到
NSMutableArray

这在键值编码中是可能的:如果您做出某些假设,例如car5是一个属性,那么这是可能的,但OP的代码看起来更像是一个实例变量或局部变量。我倾向于同意数组可能是一个更好的解决方案,键值编码可能会使它工作,但这并不是最好的解决方案。这不是一个答案。这应该是一个注释。我正在研究这个问题,但不确定如何进行。请使用上面的“添加注释”链接。我的意思是我不知道如何按照我要求的方式将NSArray与对象一起使用。抱歉搞混了。我该怎么办呢?我得到了myValue错误的重新定义。这只是伪代码-你需要把这些概念应用到你的情况中。首先,您必须确保遵循键值编码。如果这是iVar,那么您可能无法执行此操作。接下来,阅读有关键值编码的文档,了解如何正确地实现这一点(使用此代码作为指南)。这可能是一个易于运行的代码!只需将
NSString*myValue
重命名为
NSString*myKey
。KVC与IVAR一起工作(假设你没有一个名字相同的方法)。我想你可以考虑使用NSalpS/NS字典来存储这些数字。
NSString *myValue = [NSString stringWithFormat:@"car%@", carNumber];
id myValue = [myClass valueForKey:myValue];
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"];
}