2010-12-11 13 views
0

誰かがこの "if文"で何が間違っているのか説明できますか?私は得る:このif文で何が問題なのですか?

"割り当ての左オペランドとして必要な左辺値"。

これは動作しません:

if ([[prepDataArray objectAtIndex:iNDEX] boolValue] = YES) { 
     NSLog(@"HARD"); 
    } 

これは動作しますが:

diffQ = [[prepDataArray objectAtIndex:iNDEX] boolValue]; 
    if (diffQ = YES) { 
     NSLog(@"HARD"); 
    } 

私は「左辺値は」私は別の何かを持っている必要があることを示しているという問題がどこにあるか実現しません私は最初の例で試したように、if文の中で何をしたいのか、なぜ、どうやってやるのか把握していません。

素敵な誰かが私に

答えて

7
if ([[prepDataArray objectAtIndex:iNDEX] boolValue] == YES) { 
    NSLog(@"HARD"); 
} 

:-)ヒントを与えることができればと、それはあなたがBOOLYES)を割り当てようとするので最初のものは動作しませんしませ=

==だお願い申し上げますメッセージ。 2番目の方法は、BOOLdiffQに割り当てようとしたために機能します。これは正しいことではなく、あなたが

一般的なプログラミングエラー(diffQYESに比較する)期待した結果、私はこれを何百万回

をやった)
+0

ohhhh BIGは、私はしばらく前にこれで苦労されているとして、私はこのことを知られている必要がありますあなたに感謝します。私は、特に私がこれで周りをテストするために約45分を費やしたように、とても馬鹿だと感じています。 – PeterK

+1

);)一般的なバグに費やす時間が長ければ長いほど、良いプログラマーになるでしょう。それは、あなたが書いている行ごとに一般的な間違いを避けるために、あなたの脳内の痕跡のようなものです^^ –

2

私は完全に@thomasは、上記の言ったことに同意するが、私を聞かせて追加します。

ブールとYESを比較しないでください。 if構築物はそうではないのです

if(some comparison statement) { 
     .... 
} 

を必要とするということではありません。 if構築物は、以下の形式があります。

if(a boolean value) { 
     ... 
} 

をそれだけでは比較文はboolean型を生み出すことが起こるので、あなたはif文であることを置きます。 あなたの場合、boolValueはすでにboolです。あなたはYESまたはNOと比較する必要はありません。それはYES==YESまたはYES==NOのようなもので、完全に冗長です。

ちょうど

if ([[prepDataArray objectAtIndex:iNDEX] boolValue]) { 
    NSLog(@"HARD"); 
} 
+0

+1。 ObjCは冗長な言語であり、メッセージはほとんど英語のように読み込まれるので、少し "もっと"時には良いです。 Cでは私は決してそれをしません。 –

+0

それでは '(((x == YES)== YES)== YES)== YES'と書いてみませんか?私は冗談を言っています;) – Yuji

+0

私は両方の点に同意しますが、時には冗長性が必要になることもあります。両方の世界のベストを得るために(そしてポスターを作成したときのエラーを避けるため)、私はいつも比較のパラメータを交換しようとしています。 if(variable == YES)if if(YES == variable) – InsertWittyName

関連する問題