クラスのオブジェクト間の等価性をテストするためのカスタム 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 になることがあります。文字列が nil の場合、等価性は期待どおりに機能するように見えます。しかしisEqualToNumber
、NSNumber
オブジェクトの場合は完全に失敗します:
[NSNull isEqualToNumber:]: unrecognized selector sent to instance 0x1896678'
両方のオブジェクトがそのプロパティに対して nil を持っている場合、 nil をテストしisEqual
て返すにはどうすればよいですか?YES