2012-06-04 67 views
2

我從iOS sdk的plist得到id值,如果我得到值0,那麼我必須顯示它爲1,反之亦然。想要顛倒BOOL值在iOS sdk

這裏是我的同

+(BOOL) removeButton { 
    id obj = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"]; 
    if (obj != Nil) { 
     return (BOOL)obj; 
    } 
    return YES; 
} 

代碼,但問題是,作爲ID的值是0,那麼它將返回沒有,反之亦然。但我想把我的條件放在相反的問題上,例如假設id的值爲0,那麼我必須顯示返回YES,反之亦然。

+0

什麼是「Nil'」定義爲?它應該是「'nil'」(全部小寫)或「NULL」。 –

回答

7

您不能投idBOOL。假設它被正確存儲,你從字典中得到它的方式是通過數字包裝器NSNumber

NSNumber *boolWrapper = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"]; 
return ![boolWrapper boolValue]; 

這將1和1返回0 0

如果只是投它就像你正在做的,它永遠是真實的,除非對象不存在(即它是nil) 。

+0

謝謝。它顯示正確的輸出 – Nishi

0

添加「!」如下:)

return !(BOOL)obj; 

[編輯]

而且你應該使用objectForInfoDictionaryKey這個代替valueForKey的如下:

id object = [[NSBundle mainBundle] objectForInfoDictionaryKey:"Key"]; 
+0

它是空值 – Nishi

+1

而你應該使用objectForInfoDictionaryKey而不是valueForKey如下: id object = [[NSBundle mainBundle] objectForInfoDictionaryKey:「Key」]; –

0

好吧,是這樣的:

​​

我不喜歡在代碼中間有returns,它會讓它感到困惑,而不是很清晰AR。

+0

你好傑克我從plist得到0或1的值,所以我必須像那樣執行 – Nishi