Ответ 1
Как насчет if ([myNumber intValue] == 0)
? (или < или > , очевидно).
Есть ли лучший способ сравнить NSNumber с фиксированным значением, он просто чувствует себя немного неуклюжим.
if([myNumber isEqualToNumber:[NSNumber numberWithInt:0]]) NSLog(@"Zero");
Я знаю, что могу использовать -compare, но он выглядит очень похоже...
Гэри
Как насчет if ([myNumber intValue] == 0)
? (или < или > , очевидно).
NSNumber
объекты могут содержать int, float, double и т.д.
Бен (по сравнению с NSNumber
intValue
) очень быстро и легко читается, но он работает только правильно, если вы можете гарантировать, что myNumber
всегда находится в диапазоне int
(и всегда будет, даже после будущих изменений кода).
По этой причине ваш подход действительно выше, если вы не знаете точный тип myNumber
.
// This will work regardless if myNumber is an int, double etc.
[myNumber isEqualToNumber:[NSNumber numberWithInt:0]]
Если сравнивать с большими фиксированными числами или поплавками, вам все равно придется идти по этому маршруту. Кроме того, последние версии Xcode будут правильно предупреждать вас, если вы попытаетесь создать NSNumber с неправильным типом, что может помочь выявить проблемы раньше: