我有一个NSDecimalNumber
的价格字段。如果值是,我想创建一个条件。
我尝试了以下内容:
- (NSString *)numberToPriceString:(NSDecimalNumber *)price{
NSDecimalNumber *zero = [[NSDecimalNumber alloc] initWithString:@"0"];
if (price == zero){
}else{
}
但是,零值显示调试值@"0"
。
如何创建一个零值,等于我可以捕捉到的条件?
答案 0 :(得分:1)
根据经验,不要使用==
来比较Objective-C中的对象,除非您确定指针值比较符合您的需要。换句话说,只有在运算符的两边都有相同的实例时,==
才会返回true。
在Objective-C中进行比较的常用方法是使用isEqual:
方法。但是,NSDecimalNumber
是一个棘手的问题。
您需要使用compare:
并根据NSOrderedAscending
枚举或NSOrderedSame
的{{1}},NSOrderedDescending
和NSComparisonResult
值检查结果,直接获得isEqualToNumber
结果。
有关何时使用哪种方法的详细信息和提示,请参阅文档:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/index.html