2011-01-25 127 views
5

比較一個的NSNumber如何:如何如果

if (myNSNumber == 1) 
{ 
... 
} 

這似乎並沒有建立

對象:

+1

標題看起來不正確。一個NSInteger測試會編譯,我認爲你的意思是NSNumber。 – jv42 2011-01-25 11:32:47

+0

好吧你是我的apoligies – TheLearner 2011-01-25 11:40:16

回答

16

如果myNSNUmberNSNumber,你的代碼應該閱讀,

if ([myNSNumber intValue] == 1) { 
    ... 
} 

如果它是NSInteger,你可以直接將它與一個整數文字進行比較。因爲NSInteger是原始數據類型。

if (myNSNumber == 1) { 
    ... 
} 

注:確保你沒有*在你的宣言。你NSInteger聲明應閱讀,

NSInteger myNSNUmber; // RIGHT 
NSInteger *myNSNUmber; // WRONG, NSInteger is not a struct, but it is a primitive data type. 

以下是根據@ BoltClock的答案,這是他最近發佈here


但是,如果你需要使用一個指向一個NSInteger(即, NSInteger的*)由於某種原因,那麼你需要取消引用指針來獲取值:

if (*myNSNUmber == 11) { 
} 

3

NSInteger的通常是一個普通int類型,使你的代碼工作正常。

如果myNSNumber一個NSNumber的對象(如變量名稱所暗示的),那麼你應該提取它的int值:

if ([myNSNumber intValue] == 1) 
{ 
... 
}