それはかなり自明であるため、問題を再現しました。
これはエラーなしで準拠します:
switch (n) {
case 1:
NSLog(@"");
NSString *aStr;
break;
default:
break;
}
これはエラーでコンパイルされますそして、NSLog()が欠落しているだけです:
switch (n) {
case 1:
NSString *aStr;
break;
default:
break;
}
コンパイル時にエラーをスローします。「 'NSString'の前に式が必要です」
ここに何かが足りませんか?
通常のCでは、どちらの場合もこれを括弧で囲む必要があります。私はこれがあなたの問題を解決するかもしれないと思う:
case 1:
{
NSLog(@"");
NSString *aStr;
break;
}
詳細については、 this SO question を参照してください。
この問題を回避する別の方法は、上記の実例で行ったように、caseラベルと最初の宣言の間にステートメントを置くことです。詳細については、コメントとクインテイラーの回答を参照してください。
括弧なしのcase
およびCベース言語の他の多くのコンテキストで、変数をfirstステートメントとして宣言することはできません。詳細については、 switchステートメント内の変数の宣言 を参照してください。
case 0: {
Loading my nib file;
break;
}
case 1: {
Loading another nib file;
break;
}
Note that if you don't have an assignment (x = y) right after the case it won't be a problem. For example: