Как сравнить два NSInteger? - PullRequest
       21

Как сравнить два NSInteger?

8 голосов
/ 28 февраля 2012

Как мы можем сравнить два числа NSInteger? У меня есть два NSInteger, и их сравнение не помогло.

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

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

Есть идеи?

Ответы [ 4 ]

11 голосов
/ 28 февраля 2012

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

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

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

10 голосов
/ 28 февраля 2012

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

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

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

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

9 голосов
/ 28 февраля 2012
NSInteger int1;
NSInteger int2;

int1 = 13;
int2 = 17;

if (int1 > int2)
{
    NSLog(@"works");
}
2 голосов
/ 28 февраля 2012

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

int a = 5;
int b = 7;

if (a < b) {

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

}
...