2012-01-24 8 views
3

if文でスプライトファイル名を設定しようとした後、その文字列に基づいて適切なファイルをロードしようとしています。変数スコープに問題があるように見えますが、私はそれが何であるか分かりません。目的C - XCodeが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と一緒に他のコードを宣言して、残りのコードを変数で使用する必要がありますか?

答えて

10

外のローカル変数を宣言します。これらの2つの変数のどちらもスコープ外には表示されないので、エラーが発生しています。

あなたはこのように、ifの外に宣言を移動する必要があります。今

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

highScoreLabelTextをごif文の外に見えます。

+0

コードで言ったことを綴ってくれてありがとう。 – MyKuLLSKI

+0

@ MykuLLSKI過去数ヶ月にわたって、私は多くの細部の正解が単純に正しい答えよりも注目を集めることを観察しました。コードと多くの詳細で正解がさらに重要になります。詳細を提供したり、OPのコードを修正するのに時間がかかります。その結果、あなたがしたのと同時にエラーを発見した他の人より後で回答を投稿することがよくあります。私は最も速いタイピストの間ではないので、ここでは相対的な不利な点があります。私の回答より先に掲載された同等の品質の回答を見ると、他の回答のコードに誤りがない限り、私の回答は削除されます。 – dasblinkenlight

3

あなたはifの両方の枝に2つの独立した内部スコープの変数を宣言したため、これがある場合-else文

+0

これは正しいです、あなたが 'NSString * thisString;でそれを前に宣言し、ifステートメントで値を設定するだけで、ifの外側で使用しようとすると範囲外です。 –

関連する問題