2015-10-27 39 views
0

我想測試一個對象屬性爲零。當我做下它拋出錯誤:IOS/Objective-C:測試零和相反

if (item.pic == nil) 
{ //do something 
} 

然而,當我這樣做的負面,這確實扔錯誤:

if (!item.pic == nil) 
{ //do something different 
} 

The error is: Comparison between pointer and integer INT and Void 

我想第二製劑(雖然我猜我可以扭轉一切)但是,我想了解爲什麼會拋出錯誤,而其他錯誤不會。任何人都可以解釋嗎?謝謝。

+1

你的第二個測試應該是'如果(!item.pic =無)' –

+0

請檢查我的答案,並試着去'如果(YES ==零)'。你會得到相同的錯誤 – anhtu

回答

2

你的第二個測試比較應該是:

if (item.pic != nil) 
{ 
    //do something different 
} 

意爲if item.pic is not equal to nil。在Objective-C這可以簡化爲:

if (item.pic) 
{ 
    // do something different 
} 
+0

沒有意識到這是直截了當的。謝謝! – user1904273

+0

@ user1904273你應該接受這個答案。 – rmaddy

1

你必須這樣做:

if (!(item.pic == nil)) // or if(item.pic != nil) 
{ //do something different 
} 

item.pic == nil:指針比較VS指針

!item.pic == nil:VS點整數的比較 - >錯誤。 !item.pic將返回YES/NO(1/0),所以不能跟nil