Для случаев, когда вы просто хотите проверить, содержат ли два свойства NSNumber одно и то же значение , то из документации Apple кажется, что использование
- (BOOL)isEqualToNumber:(NSNumber *)aNumber
- самый простой и эффективный способ сравнения двух значений NSNumber.
Например:
if ([someNumber isEqualToNumber:someOtherNumber])
{
// The numbers hold the same value
}
else
{
// The numbers hold different values
}
В документации также сказано: «Этот метод более эффективен, чем сравнение: если вы знаете, что два объекта являются числами».
Всякий раз, когда вам нужно узнать, является ли значение меньше или больше, они предлагают
- (NSComparisonResult)compare:(NSNumber *)aNumber
, но лично я бы предпочел на этом этапе просто извлечь целочисленные значения (или двойные значения) и использовать регулярные операторы <и> для сравнения, потому что это делает код намного проще для чтения, например так:
if (firstNumber.intValue > secondNumber.intValue)
{
// First number is greater than the second number
}
else if (firstNumber.intValue == secondNumber.intValue)
{
// The two numbers have the same value
}
else
{
// The first number is smaller than the second number
}
Что-то в этом роде гораздо легче читать, чем звонки -compare:, на мой взгляд.
Эрик