2011-10-10 43 views

回答

0

浮點數可以爲零,因爲它不是一個對象。

而一個NSNumber不是一個浮點值,但有一個方法,返回一個浮點值。

使用if (score)來檢查,如果NSNumber之前得到實例化。

1

與您的NSNumber實例中存儲的浮點值無關;該對象本身或者是nil或者不是。要檢查對象是nil,if(obj == nil)在功能上等同於if(obj)

所以你的條件可能不會做你期望的,但它檢查nil。如果需要更具體的解釋,您需要添加更多關於if正文中正在發生的事情的詳細信息。

關鍵是發送消息到nil,如[nil floatValue]總是返回0,解釋爲該方法的返回類型是什麼。例如,如果您發送floatValuenil,您將返回浮點數0.如果發送應返回對象的消息,您將獲得nil;一條消息,應返回int,你會得到整數0

另外要注意的是,當你說if(score.latitude),表達式會假,如果要麼scorelatitudenil(因爲如果scorenil,發送到latitude它將返回nil

0

正如我終於明白,這個問題是因爲核心數據的數據保存到SQL數據庫,其中存儲無屬性0.000 ...