Цель C - XCode не распознает переменную вне оператора if - PullRequest
3 голосов
/ 24 января 2012

Попытка задать имя файла спрайта с помощью оператора if, а затем загрузить соответствующий файл на основе этой строки.Похоже, что есть проблема с моей областью действия переменной, но я не знаю, что это такое.

Вот мой код:

if ([[GameManager sharedGameManager] newHighScore] == TRUE) {
    NSString *highScoreLabelText = @"label-new-high-score.png"
} else {
    NSString *highScoreLabelText = @"label-high-score.png"
}

CCSprite *highScoreLabel = [CCSprite spriteWithSpriteFrameName:highScoreLabelText];
[highScoreLabel setAnchorPoint:ccp(0,0)];
[highScoreLabel setPosition:ccp(20, winSize.height * 0.575f)];
[self addChild:highScoreLabel];

XCode отмечает ошибку, говоря, что highScoreLabelTextнеобъявленный идентификатор, и, следовательно, не будет компилировать приложение.Нужно ли объявлять что-то еще вместе с NSString, чтобы остальная часть кода работала с переменной?

Ответы [ 2 ]

10 голосов
/ 24 января 2012

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

Вы должны переместить объявление из if, например:

NSString *highScoreLabelText;
if ([[GameManager sharedGameManager] newHighScore] == TRUE) {
    highScoreLabelText = @"label-new-high-score.png"
} else {
    highScoreLabelText = @"label-high-score.png"
}

Теперь highScoreLabelText видно за пределами вашего заявления if.

3 голосов
/ 24 января 2012

Объявите локальную переменную вне оператора if-else

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