2011-01-05 13 views
0

をロードする前に声明を期待していますなぜスイッチはswitch文のペン先

switch (indexPath.row) 
case 0: 
Loading my nib file; 
break; 
case 1: 
Loading another nib file; 
break 
default: 
break 
........ 

私のnibファイルをロードする前に。いずれかのステートメントが必要です。

case 0: 
NSLog(@""); 
Loading Nib file.... 

マイその期待声明のNSLog(@「」); .......私はのNSLog ...またはそのは私にエラーを与えて、他の文を置く必要がない場合は... ...

私はそのような理由を知りたいです。

+0

間違いなく非常に混乱しています。私は同意します –

+0

nibファイルを読み込むコードは何ですか?あなたのswitch文に中括弧がないのはなぜですか? – BoltClock

+0

これに関する以前の質問がありましたが、私は今それを見つけることができません。説明のためには – taskinoor

答えて

3

Objective-CがCから奇妙な方法で継承した問題です。基本的に各caseの文は単一のブロックになければなりません。コンパイラは、case文の直後の文が代入文ではなく、それが混乱している場合にこれを認識します。

あなたがやった方法はNSLogと、それを解決することもできますし、単にブロックを作成するために、中括弧を使って文を囲むことができます(

case 0: { 
    Loading my nib file; 
    break; 
} 
case 1: { 
    Loading another nib file; 
    break; 
} 

注割り当てを持っていない場合ということx = y)、caseの直後に問題はありません。例えば: - TestiPhoneCalViewController *testiPhoneCalViewController - 後の例では

case 0: 
    if (a = 1) NSLog(@"This works fine"); 
    break; 

あなたは右case文の後に、オブジェクトをインスタンス化した割り当てがなかったので、それは大丈夫でした。

+0

+1。 – taskinoor

+0

私はあなたに同意する@taskinoor – Aditya

+0

....ありがとう友人。 –

関連する問題