2015-10-05 93 views
-1

當我登錄一個應該是NSNumber的變量時,它給了我0我認爲這意味着它是nil我想排除這種情況。如果它是零,我也想排除它。我只想確定1,2,3中有數字的情況。Objective-C:測試零/ 0值?

但是,我已經嘗試了以下,沒有一個成功地排除了變量記錄爲0但包括記錄到1,2,3等的情況。任何人都可以建議我做錯了什麼。

if (self.number!=nil) //fails to exclude 

if (self.number) //fails to exclude 
if (self.number.length>0)//returns error 
if (self.number!=nil&&self.number!=0) //fails to exclude 

of note if (!self.number) //does exclude but it also excludes case where self.number is 2, 3 or any other number. 

感謝您的任何建議

回答

1

一個NSNumber是圍繞一個值的對象的包裝。您可以將其與nil進行比較,這很合適,但在確定它不是nil後,您需要調用其上的方法來獲取它所表示的實際值。

if (self.number != nil) { 
    NSLog(@"Number value: %ld", self.number.integerValue); 
} 
+0

OP在他們發佈的第一行代碼中執行此操作。 – rmaddy

+0

好的。我在你的答案中加入了一個變體。如果(self.number!-nil && self.number.integerValue!= 0)Thx! – user1904273

+0

@rmaddy我意識到這一點,我試圖說明我的例子中的差異。 –

2

爲了測試0值,嘗試:

NSNumber *num=[NSNumber numberWithInt:0]; or @(0); 

if ([num intValue]==0) { 
    NSLog(@"number is 0");  //executes 
} 

NSNumber *num=[NSNumber numberWithInt:1]; or @(1); 

if ([num intValue]==1) { 
    NSLog(@"number is 1"); //executes 
} 

相同於圖2和3還

+1

'NSNumber * num = @(0)'should do;) – sloik

+0

謝謝,更新了我的答案! –