Сделать имя переменной из NSString - PullRequest
1 голос
/ 04 декабря 2011

У меня есть цикл 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);
    }

Ответы [ 3 ]

3 голосов
/ 04 декабря 2011

Это было бы невозможно, поскольку вы не объявили переменную.Обойти это можно было бы с помощью NSArray и сохранения ваших данных в массиве вместо создания списка переменных.

1 голос
/ 06 декабря 2011

Использование 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.

0 голосов
/ 04 декабря 2011

вы можете использовать NSSelectorFromString?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...