iOS项目中比较NSDecimalNumber:用isEqualTo还是==运算符?
NSDecimalNumber数值比较的正确方式
在iOS项目里比较NSDecimalNumber对象,必须用isEqual(to:)方法来判断数值是否相等,==运算符不能用来做数值比较,原因如下:
==运算符:在Swift中,NSDecimalNumber作为NSObject子类,默认的==比较的是对象的内存引用——也就是两个变量是不是指向同一个实例对象。你代码里的num1和num2是两个独立创建的实例,所以用==判断会输出not equal,这显然不是你要的数值比较结果。isEqual(to:)方法:这个是NSDecimalNumber专门用来判断数值相等性的方法,它会直接对比两个对象存储的实际数值,不管是不是同一个实例。所以你代码里用这个方法会输出equal,这才是符合需求的正确逻辑。
你的代码实际运行结果:
- 第一个
if分支(用==):输出not equal - 第二个
if分支(用isEqual(to:)):输出equal
如果你的需求是判断两个NSDecimalNumber的数值是否一致,就用isEqual(to:),别用==。
内容的提问来源于stack exchange,提问作者Snowtown123
相关产品推荐
相关产品推荐

