2012-02-28 2 views
6

Как сравнить два номера NSInteger? Я имею 2 NSIntegers и сравниваю их регулярн путь не работал.Как сравнить два NSInteger?

if (NSIntegerNumber1 >= NSIntegerNumber2) { 
    //do something 
} 

Eventhough, первое значение было 13, и второе значение было 17, то, если цикл выполняется

Любая идея?

+1

Вот как вы это делаете. Дважды проверьте их значения: установите точку останова прямо перед 'if' и убедитесь, что они того, чего вы ожидаете. –

+0

NSInteger - это alis для int. поэтому он должен работать. Другие мудрые указывают тип переменной NSIntegerNumber1 .. –

+0

Вы уверены, что это номера NSInteger? Я предполагаю, что это NSNumbers, и вы пытаетесь сравнить указатели. – SVGreg

ответ

9
NSInteger int1; 
NSInteger int2; 

int1 = 13; 
int2 = 17; 

if (int1 > int2) 
{ 
    NSLog(@"works"); 
} 
11

Ну, поскольку у вас есть Integer и Number в имени, вы могли бы объявить два значения как NSNumber вместо NSInteger. Если да, то вам необходимо сделать следующее:

if ([NSIntegerNumber1 intValue] >= [NSIntegerNumber2 intValue]) { 
     // do something 
} 

В противном случае он должен работать так, как есть!

7

NSInteger является типичным типом для встроенного интегрального типа (например, int или long).

Безопасно сравнивать, используя a == b.

Другие распространенные операторы ведут себя предсказуемо: !=, <=, <, >= et al.

И, наконец, базовый тип NSInteger варьируется в зависимости от платформы/архитектуры. Небезопасно предположить, что он всегда будет 32 или 64 бит.

+0

Это должно быть проголосовано, так как это объясняет рассуждения –

2

При сравнении целых чисел, используя это, будет работать нормально:

int a = 5; 
int b = 7; 

if (a < b) { 

NSLog(@"%d is smaller than %d" a, b); 

}