2014-10-16 44 views
1

這段代碼似乎完全合乎邏輯。爲什麼我得到「開關條件具有布爾值」錯誤?我使用它來切換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; 
    } 
} 
+0

也許是暗示,在一個布爾值的情況下,if..then..else ..可能是解決方案更好 – deau 2014-10-16 18:35:43

+4

如果你在'YES'和'NO'中使用'BOOL'而不是''TRUE'和'FALSE'時使用'BOOL',你會得到錯誤嗎?當然,在這種情況下,使用簡單的「if/else」語句和「bool」值的簡單切換比使用「switch」語句更容易讀取和寫入。 – rmaddy 2014-10-16 18:42:59

+0

將類型更改爲BOOL和YES/NO可消除此錯誤。道歉 - 我以爲在發佈這個問題之前我曾嘗試過。非常感謝。 – 2014-10-22 08:37:35

回答

5

該警告只是告訴您,您正在使用帶有布爾值的switch語句。對於真正的布爾值,您應該只使用if - else語句,而不是switch

請注意,如果您使用true布爾類型,則只會出現此警告。如果您在Mac OS或非64位iOS上使用BOOL,那是unsigned char。因此你不會爲這些目標得到這個警告。但是,如果您使用bool(或者如果您在64位iOS目標上使用BOOL),則會收到此警告。

您可以用if - else語句替換switch語句來禁止此警告。

1

我建議你用一個簡單的if/else在這種情況下,由於是:

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