Objective c 开关条件有布尔值吗?

Objective c 开关条件有布尔值吗?,objective-c,boolean,switch-statement,Objective C,Boolean,Switch Statement,这段代码似乎完全合乎逻辑。为什么我得到的开关条件有布尔值错误?我用它来切换UIButton上的文本。它工作,但我仍然有错误 bool buttonSunStatus = TRUE; - (void) useButtonSun:(id)sender { buttonSun = [UIButton buttonWithType: UIButtonTypeCustom]; switch (buttonSunStatus) { case TRUE:

这段代码似乎完全合乎逻辑。为什么我得到的开关条件有布尔值错误?我用它来切换UIButton上的文本。它工作,但我仍然有错误

bool buttonSunStatus = TRUE;

- (void) useButtonSun:(id)sender
{
    buttonSun = [UIButton buttonWithType: UIButtonTypeCustom];
    switch (buttonSunStatus) {
        case TRUE:
            [sender setTitle:@"No Sun" forState:UIControlStateNormal];
            buttonSunStatus = FALSE;
            break;
        case FALSE:
            [sender setTitle:@"Sun" forState:UIControlStateNormal];
            buttonSunStatus = TRUE;
            break;
    }
}

警告只是告诉您正在使用带有布尔值的switch语句。对于真正的布尔值,应该只使用if-else语句,而不是switch

注意,只有在使用true boolean类型时,才会收到此警告。如果使用BOOL,则在Mac OS或非64位iOS上是一个未签名字符。因此,对于这些目标,您不会得到此警告。但如果您在64位iOS目标上使用bool或bool,您将收到此警告


您可以用if-else语句替换switch语句来抑制此警告。

此警告只是告诉您正在使用带布尔值的switch语句。对于真正的布尔值,应该只使用if-else语句,而不是switch

注意,只有在使用true boolean类型时,才会收到此警告。如果使用BOOL,则在Mac OS或非64位iOS上是一个未签名字符。因此,对于这些目标,您不会得到此警告。但如果您在64位iOS目标上使用bool或bool,您将收到此警告


您可以将switch语句替换为if-else语句以抑制此警告。

我建议您在此场景中使用简单的if/else,如下所示:

if (buttonstatus){
// TRUE code  
}
else{
// FALSE code
}

我建议您在此场景中使用简单的if/else,如下所示:

if (buttonstatus){
// TRUE code  
}
else{
// FALSE code
}

您应该使用BOOL,而不是BOOL。

您应该使用BOOL,而不是BOOL。

也许这是在建议布尔值的情况下使用if..then..else。。可能是一个更好的解决方案?如果您使用带有YES和NO的BOOL而不是带有TRUE和FALSE的BOOL,您会得到错误吗?当然,在这种情况下,一个简单的if/else语句和bool值的简单切换比使用switch语句更容易读写。将类型更改为bool和YES/NO将删除此错误。道歉-我想我在发布这个问题之前已经试过了。非常感谢。也许这意味着在布尔值的情况下,if..then..else。。可能是一个更好的解决方案?如果您使用带有YES和NO的BOOL而不是带有TRUE和FALSE的BOOL,您会得到错误吗?当然,在这种情况下,一个简单的if/else语句和bool值的简单切换比使用switch语句更容易读写。将类型更改为bool和YES/NO将删除此错误。道歉-我想我在发布这个问题之前已经试过了。非常感谢。