得分是NSManagedObject。 score.latitude是一個NSNumber,它實際上是一個浮點值。如何檢查被管理對象的float屬性是否爲零?
NSLog(@"%f", [score.latitude floatValue]);
顯示0.000000。
建設我用它來檢查零:
如果(score.latitude ==無)
不起作用。
得分是NSManagedObject。 score.latitude是一個NSNumber,它實際上是一個浮點值。如何檢查被管理對象的float屬性是否爲零?
NSLog(@"%f", [score.latitude floatValue]);
顯示0.000000。
建設我用它來檢查零:
如果(score.latitude ==無)
不起作用。
浮點數可以爲零,因爲它不是一個對象。
而一個NSNumber不是一個浮點值,但有一個方法,返回一個浮點值。
使用if (score)
來檢查,如果NSNumber之前得到實例化。
與您的NSNumber
實例中存儲的浮點值無關;該對象本身或者是nil
或者不是。要檢查對象是nil
,if(obj == nil)
在功能上等同於if(obj)
。
所以你的條件可能不會做你期望的,但它是檢查nil
。如果需要更具體的解釋,您需要添加更多關於if
正文中正在發生的事情的詳細信息。
關鍵是發送消息到nil
,如[nil floatValue]
總是返回0
,解釋爲該方法的返回類型是什麼。例如,如果您發送floatValue
到nil
,您將返回浮點數0.如果發送應返回對象的消息,您將獲得nil
;一條消息,應返回int
,你會得到整數0
另外要注意的是,當你說if(score.latitude)
,表達式會假,如果要麼score
或latitude
是nil
(因爲如果score
是nil
,發送到latitude
它將返回nil
)
正如我終於明白,這個問題是因爲核心數據的數據保存到SQL數據庫,其中存儲無屬性0.000 ...