我有一个for循环,其中必须创建9个六边形(hexagon1到hexagon9)......但我不能使用hexString作为Sprite的名称,因为它是一个NSString,对吧?那我怎么能做对的?
hexString [<- I want the for loop to generate "hexagon1", then "hexagon2" and so on instead of the NSString] = [self createHexagon:ccp(xVal,yVal) :i];
int hexCount = [[[itemPositions valueForKey:myString]valueForKey:@"hexposition"] count];
for (int i=1;i<=hexCount;i++){
NSString *hexString = [NSString stringWithFormat:@"hexagon%d",i];
NSNumber *generatedXVal = [[[[itemPositions valueForKey: myString ]valueForKey:@"hexposition"] valueForKey: hexString]valueForKey: @"xVal"];
int xVal = [generatedXVal integerValue];
NSNumber *generatedYVal = [[[[itemPositions valueForKey: myString ]valueForKey:@"hexposition"] valueForKey: hexString ]valueForKey: @"yVal"];
int yVal = [generatedYVal integerValue];
hexString = [self createHexagon:ccp(xVal,yVal) : i];
NSLog(@"%@", hexString);
}
答案 0 :(得分:3)
这是不可能的,因为你没有声明变量。解决这个问题的方法是使用NSArray并将数据保存到数组而不是制作变量列表。
答案 1 :(得分:1)
使用NSMutableDictionary
。
for (int i=1;i<=hexCount;i++){
NSString *hexString = [NSString stringWithFormat:@"hexagon%d",i];
CCSprite *sprite = [self doSomethingToGetSprite];
[mutableDictionary setObject:sprite forKey:hexString];
}
稍后您可以使用以下方法迭代字典中的所有精灵:
for (NSString *key in mutableDictionary) {
CCSprite *sprite = [mutableDictionary objectForKey:key];
[self doStuffWithSprite:sprite];
}
顺便说一句,你为什么要覆盖你在这里指定的hexString
:
NSString *hexString = [NSString stringWithFormat:@"hexagon%d",i];
这里有一个:
hexString = [self createHexagon:ccp(xVal,yVal) : i];
该方法调用是一个明显的语法错误,其中悬挂: i
部分。
答案 2 :(得分:0)
你可以使用NSSelectorFromString
吗?