Как заставить объективные манипуляции со строками C генерировать имя определенной константы? - PullRequest
0 голосов
/ 13 августа 2011

Я создал файл Constants.h со списком:

#define kw00 @"foo" 
#define kw01 @"bar"
...

Я также использую #import Constants.h в .h.Используя метод newQuote, я пытаюсь случайным образом выбрать один из kw strings, но мне трудно обнаружить, как call a reference к constant, определенному в строке kwString.

-(IBAction)newQuote 
{
    int rNumber = arc4random() % kwTotal;
    (rNumber <9) 
    {
        NSString *kwString = [@"kw0" stringByAppendingString:[NSString stringWithFormat:@"%d", rNumber]];   
    }
}

Мысли и предложения будут наиболее цениться.

1 Ответ

6 голосов
/ 13 августа 2011

Просто невозможно получить доступ к таким вещам. Эти «константы» даже не существуют во время выполнения или когда компилятор видит ваш код - они преобразуются препроцессором в буквальные строки.

Вместо этого вы должны создать массив, а затем вы можете просто получить элемент по заданному индексу.

(Как правило, всякий раз, когда вы называете вещи последовательными числами в конце, ответом на любые возникающие проблемы может быть «Использование массива».)

...