使用 isEqual 来测试 NSNumber 是否相等
Using isEqual to test equality of NSNumber
我的印象是,要测试 NSNumber 的值,您可以使用 isEqual:
但是,当我使用以下代码测试整数值为 38 的 NSNumber 的值时,我得到的是 false 而不是 true。是否有我遗漏的微妙之处?
if ([self.adding isEqual:@38]) {
//they are equal
}
else {
//they are unequal
}
值得注意的是,当我使用 if ([self.adding intValue]==38)
时,我确实得到了预期的结果。
在调试器中,NSNumber 显示为 int(38)
。
使用 -isEqualToNumber:
进行数字相等性测试,它本身与 -compare:
方法的相等性概念相关联。
(NSNumber
被实现为 class 集群。-isEqual:
方法的核心可能是在寻找其他的细微之处,比如两个实例是否来自相同的实际类型或无论如何,这在处理集合中的存储时可能很重要,但不会帮助您检查 38。这与您应该使用 NSString 的 -isEqualToString:
方法进行等效比较的原因相同。
我的印象是,要测试 NSNumber 的值,您可以使用 isEqual:
但是,当我使用以下代码测试整数值为 38 的 NSNumber 的值时,我得到的是 false 而不是 true。是否有我遗漏的微妙之处?
if ([self.adding isEqual:@38]) {
//they are equal
}
else {
//they are unequal
}
值得注意的是,当我使用 if ([self.adding intValue]==38)
时,我确实得到了预期的结果。
在调试器中,NSNumber 显示为 int(38)
。
使用 -isEqualToNumber:
进行数字相等性测试,它本身与 -compare:
方法的相等性概念相关联。
(NSNumber
被实现为 class 集群。-isEqual:
方法的核心可能是在寻找其他的细微之处,比如两个实例是否来自相同的实际类型或无论如何,这在处理集合中的存储时可能很重要,但不会帮助您检查 38。这与您应该使用 NSString 的 -isEqualToString:
方法进行等效比较的原因相同。