Objective c 用isEqual检验NSN数的相等性
我的印象是,要测试NSNumber的值,您可以使用isEqual: 但是,当我使用下面的代码测试整数值为38的NSNumber的值时,我得到的是false而不是true。这其中是否有我所遗漏的微妙之处Objective c 用isEqual检验NSN数的相等性,objective-c,nsnumber,Objective C,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显
if ([self.adding isEqual:@38]) {
//they are equal
}
else {
//they are unequal
}
需要注意的是,当我使用if[self.adding intValue]==38时,我确实得到了预期的结果
在调试器中,NSNumber显示为int38。使用-isEqualToNumber:进行数值相等测试,该测试本身与-compare:方法的相等概念相关联
NSNumber实现为一个类集群。-isEqual:方法的核心可能是查看其他细微之处,例如这两个实例是否来自同一实际类型或其他类型,这在处理集合中的存储时可能很重要,但不会帮助您检查数据类型。这与您应该使用NSString的-isEqualToString:方法进行等效比较的原因相同 自我添加是如何构建的?例如,如果它是@38.5,它将不起作用,但如果它在转换为Int.Ok时起作用,它就会起作用。谢谢今后将使用isEqualToNumber