Использование isEqual для проверки равенства NSNumber - PullRequest
0 голосов
/ 26 сентября 2018

У меня сложилось впечатление, что для проверки значения NSNumber вы можете использовать isEqual:

Однако, когда я проверяю значение NSNumber с целочисленным значением 38, используя следующий код, яложь вместо истины.Есть ли какая-то тонкость в этом, которую я пропускаю?

if ([self.adding isEqual:@38]) {
//they are equal
}
else {
//they are unequal
}

Следует отметить, что когда я использую ([self.adding intValue]==38), я получаю ожидаемый результат.

В отладчике NSNumber показываеткак int(38).

1 Ответ

0 голосов
/ 26 сентября 2018

Используйте -isEqualToNumber: для проверки числового равенства, которая сама связана с понятием равенства метода -compare:.

(NSNumber реализован в виде кластера классов. Сущности метода -isEqual:, вероятно, обращают внимание на дополнительные тонкости, например, относятся ли два экземпляра к одному и тому же фактическому типу или что-то еще, что может быть важно, когдаработа с хранилищем в коллекции, но это не помогает вам проверять 38. Это та же самая причина, по которой вы должны использовать метод NSString -isEqualToString: для эквивалентного сравнения).

...