switch条件有布尔值吗?

时间:2014-10-16 18:32:57

标签: objective-c boolean switch-statement

这段代码似乎完全符合逻辑。为什么我得到“Switch condition has boolean value”错误?我用它来切换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;
    }
}

3 个答案:

答案 0 :(得分:5)

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

注意,如果使用true boolean类型,则只会收到此警告。如果您使用BOOL,则在Mac OS或非64位iOS上为unsigned char。因此,您不会对这些目标发出此警告。但是,如果您使用bool(或者如果您在64位iOS目标上使用BOOL),您将收到此警告。

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

答案 1 :(得分:1)

我建议您在此方案中使用简单的if / else,原样如下:

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

答案 2 :(得分:0)

您应该使用 BOOL,而不是 bool