我的印象是,可以使用isEqual来测试NSNumber的值:
但是,当我使用以下代码测试整数值为38的NSNumber的值时,我得到的是false而不是true。我缺少这种微妙之处吗?
if ([self.adding isEqual:@38]) {
//they are equal
}
else {
//they are unequal
}
值得注意的是,当我使用([self.adding intValue]==38)
时,确实得到了预期的结果。
在调试器中,NSNumber显示为int(38)
。
答案 0 :(得分:1)
使用-isEqualToNumber:
进行数字相等性测试,该测试本身与-compare:
方法的相等性概念相关。
({NSNumber
被实现为类集群。-isEqual:
方法的胆量可能正在寻找其他细微之处,例如两个实例是来自同一实际类型还是其他,这可能很重要。在处理集合中的存储时,但不帮您检查38。这是您应该使用NSString的-isEqualToString:
方法进行等效比较的相同原因)。