如何比较iOS中的NSDecimalNumber

时间:2014-12-23 20:58:42

标签: ios objective-c nsdecimalnumber

我有一个NSDecimalNumber的价格字段。如果值是,我想创建一个条件。

我尝试了以下内容:

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

    }else{

    }

但是,零值显示调试值@"0"

如何创建一个零值,等于我可以捕捉到的条件?

1 个答案:

答案 0 :(得分:1)

根据经验,不要使用==来比较Objective-C中的对象,除非您确定指针值比较符合您的需要。换句话说,只有在运算符的两边都有相同的实例时,==才会返回true。

在Objective-C中进行比较的常用方法是使用isEqual:方法。但是,NSDecimalNumber是一个棘手的问题。

您需要使用compare:并根据NSOrderedAscending枚举或NSOrderedSame的{​​{1}},NSOrderedDescendingNSComparisonResult值检查结果,直接获得isEqualToNumber结果。

有关何时使用哪种方法的详细信息和提示,请参阅文档:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/index.html