有人可以解释这个“if声明”有什么问题吗?我明白了:
“左值作为赋值的左操作数”。
这不起作用:
if ([[prepDataArray objectAtIndex:iNDEX] boolValue] = YES) {
NSLog(@"HARD");
}
虽然这有效:
diffQ = [[prepDataArray objectAtIndex:iNDEX] boolValue];
if (diffQ = YES) {
NSLog(@"HARD");
}
我确实意识到问题在哪里,'左值'表示我需要在左侧有不同的东西,但我不知道为什么以及如何在'if'语句中做我想要的尝试第一个例子。
如果有人能给我一个提示,我将不胜感激: - )
答案 0 :(得分:7)
if ([[prepDataArray objectAtIndex:iNDEX] boolValue] == YES) {
NSLog(@"HARD");
}
它是==
而不是=
第一个不起作用,因为您尝试为邮件分配BOOL
(YES
)。第二个有效,因为您尝试将BOOL
分配给diffQ
。这是正确的,但不是您期望的结果(将diffQ
与YES
比较)
常见编程错误;)我已经完成了数百万次
答案 1 :(得分:2)
我完全赞同@thomas上面所说的,但让我补充一下。
请勿将bool与YES
进行比较。并不是if
构造需要
if( some comparison statement ) {
....
}
事实并非如此。 if
结构具有以下形式:
if( a boolean value) {
...
}
只是比较语句产生一个布尔值,所以你把它放在if
语句中。
在您的情况下,boolValue
已经为您提供了bool
。您无需将其与YES
或NO
进行比较。这就像做YES==YES
或YES==NO
一样,而且完全是多余的。
只做
if ([[prepDataArray objectAtIndex:iNDEX] boolValue]) {
NSLog(@"HARD");
}