2012-02-28 23 views
6

¿Cómo comparamos dos números de NSInteger? Tengo dos NSIntegers y compararlos de la manera habitual no funcionaba.¿Cómo comparar dos NSInteger?

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

Eventhough, el primer valor era 13 y el segundo valor era 17, el bucle si se está ejecutando

Cualquier idea?

+1

así es como usted lo hace. Vuelva a verificar sus valores: establezca un punto de interrupción justo antes del 'si' y asegúrese de que sean los que espera. –

+0

NSInteger es alis para int. entonces debería funcionar De lo contrario, especifique el tipo de variable NSIntegerNumber1 .. –

+0

¿Está seguro de que se trata de números NSInteger? Supongo que estos son NSNumbers y estás tratando de comparar los punteros. – SVGreg

Respuesta

9
NSInteger int1; 
NSInteger int2; 

int1 = 13; 
int2 = 17; 

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

Bueno, como tiene Entero y Número en el nombre, puede haber declarado los dos valores como NSNumber en lugar de NSInteger. Si es así, entonces necesita hacer lo siguiente:

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

De lo contrario, debería funcionar como está!

7

NSInteger es solo un typedef para un tipo integral integrado (por ejemplo, int o).

Es seguro comparar usando a == b.

Otros operadores comunes se comportan predeciblemente: !=, <=, <, >= et al.

Finalmente, el tipo subyacente de NSInteger varía según la plataforma/arquitectura. No es seguro suponer que siempre será de 32 o 64 bits.

+0

Esto debería votarse, ya que explica el razonamiento –

2

Al comparar números enteros, usando esto, funcionaría bien:

int a = 5; 
int b = 7; 

if (a < b) { 

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

}