2014-12-23 57 views
-2

我有一個NSDecimalNumber的價格字段。如果值是,我想創建一個條件。如何比較iOS中的NSDecimalNumber

我試過如下:

- (NSString *)numberToPriceString:(NSDecimalNumber *)price{ 
    NSDecimalNumber *zero = [[NSDecimalNumber alloc] initWithString:@"0"]; 
    if (price == zero){ 

    }else{ 

    } 

但是零值顯示@"0"調試值。

如何創建一個零值,等於我可以捕捉到的條件?

+0

晴這將涉及到實際閱讀NSDecimalNumber的文檔。 – matt

+0

甚至沒有,比較:將做的工作就好! – gnasher729

回答

1

作爲一個經驗法則,不要使用==來比較Objective-C中的對象,除非您確定指針值比較是您需要的。換句話說,只有在操作員兩側有相同的實例時,==纔會返回true。

在Objective-C中進行比較的常用方法是使用isEqual:方法。然而,NSDecimalNumber是一個棘手的問題。

您必須要麼使用compare:和檢查結果對NSComparisonResult枚舉或isEqualToNumberNSOrderedAscendingNSOrderedSameNSOrderedDescending值,並直接獲得BOOL結果。

請參考文檔的細節和技巧上時所使用的方法:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/index.html

+1

您也可以在'NSDecimalNumber'中使用'isEqualToNumber:' – thelaws

+0

Fair point!我已經更新了提及'isEqualToNumber:'的答案。謝謝。 – siejkowski