2011-01-25 76 views
13

如何檢查NSInteger是否有效?NSInteger!= nil

NSInteger previousScore = [[self score] integerValue]; 
    if (previousScore != nil) { 
     //do something 
    } 
+0

刪除了稱呼:「提前致謝」,不要在下次 – 2015-05-17 13:52:11

回答

14

如果你想在你的代碼的合法性進行檢查,你會做這樣的事情:

NSNumber *previousScore = [self score]; 

if (previousScore != nil) { 
    NSInteger previousScoreValue = [previousScore integerValue]; 
    // do something 
} 

這可以作爲你得到回一個對象,而不是原始值。

12

NSInteger不是一個對象。它只是一個簡單的原型int。因此,它永遠不會是nil。就像直接使用int一樣對待它。

編輯: ,闡述在塞薩爾的評論,在64位系統NSInteger實際上是一個long和32位系統這是一個int

+2

定義爲:#if __LP64__ typedef long NSInteger; #else typedef int NSInteger; endif – 2011-01-25 01:51:33

+5

其實在默認情況下,在很多情況下,NSInteger將是零,因爲nil與零相同......儘管如此,您可能會收到編譯器警告。在給定previousScore的示例代碼中,如果[self score]返回零,則將爲0(零)... – 2011-01-25 02:34:44