我有一个自定义isEqual来测试我的类对象之间的相等性:
BOOL result = ([attempt.attemptId isEqualToNumber:self.attemptId] &&
[attempt.pitcher isEqualToString:self.pitcher] &&
[attempt.vsTeam isEqualToString:self.vsTeam] &&
attempt.isHomeTeam == self.isHomeTeam &&
[attempt.hitlessInnings isEqualToNumber:self.hitlessInnings] &&
...等
return result;
有时,这些属性中的任何一个都可能为零。当字符串为nil时,相等似乎按预期工作。但isEqualToNumber
对象的NSNumber
完全失败:
[NSNull isEqualToNumber:]: unrecognized selector sent to instance 0x1896678'
我如何在isEqual
中测试nil并在两个对象的属性都为零时返回YES
?
答案 0 :(得分:1)
通常在编写相等方法时,您应该:
nil
如果您被传递NSNull
而不是nil
,则这是您的JSON处理和验证中的错误,需要修复。您还需要明确检查nil
案例,因为nil == nil
为真,但[nil isEqual:nil]
为假。