在数组中动态读取int

时间:2012-03-07 17:27:19

标签: iphone objective-c cocos2d-iphone

我有值我希望在数组中动态加载,这里是示例

首先,我在init中定义了3个不同的值,然后在我的数组中,我希望它确定要读取的值。例: 首先我定义值

int value1=20
int value2=40;
int value3=60;
然后我在我的数组中定义另一个名为valueToLoad的int,我将给每个int一个数字标记。并且我希望单个数组项根据其数字标签读取不同的值,以便项1将读取value1,项2将读取value2,依此类推。我尝试了下面的方法将NSString转换为int:

NSString *valueVariable=[NSString stringWithFormat:@"value%d",i]; (i being the number tag)
int valueToRead = [valueVariable intValue];

遗憾的是,除非字符串是实际整数,否则此转换不支持任何其他内容的转换。 但是我不想运行IF语句:

if(tag==1)
{ int valueToLoad= value1;}

谁不明白。我只是试图根据数组的数量读取数组中的不同Int值。假设我在数组中有3个项目命名为A,B和C.我希望项目A读取值1,将项目B读取为值2,依此类推。

3 个答案:

答案 0 :(得分:2)

为什么不简单地做一些像

这样的事情
int values[] = {20,40,60};

...

int valueToRead = values[i]; //or i-1, depending if i starts from 0 or 1

答案 1 :(得分:0)

不确定问题的背景,但为什么不使用NSDictionary? 这样您就可以将您的数字标记存储为键,并将您的值存储为值...

你这样填写你的字典:

NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:value1, tag1, value2, tag2, nil];

使用以下内容阅读您的价值:[dict objectForKey:tag1];

答案 2 :(得分:0)

  • 您可以使用数组,将变量存储在那里,并将其编入索引。
  • 您可以使用字典,将变量存储为值,然后按键查找。
  • 您可以将所有变量声明为@property,然后使用[self valueForKey:]按名称查找它们。
  • 您可以将ivar的名称构建为字符串,然后使用object_getInstanceVariable()之类的内容直接检索它的值(这类似于#3,除非您不必将其声明为@property)
  • 如果您正在处理视图,可以为每个视图分配一个唯一标记,然后通过[superview viewWithTag:aTag]检索它。 编辑:请注意,这仅适用于实例变量。这不适用于全局/静态变量。

取自:Objective C Equivalent of PHP's "Variable Variables"