Cómo comparar un NSNumber en un if

Cómo:

if (myNSNumber == 1) { ... } 

Esto no parece build

El object:

Si myNSNUmber es NSNumber , su código debería leer,

 if ([myNSNumber intValue] == 1) { ... } 

Si es NSInteger , puede compararlo directamente con un integer literal. Porque NSInteger es un tipo de datos primitivo.

 if (myNSNumber == 1) { ... } 

Nota: Asegúrese de que no tiene * en su statement. Sus declaraciones de NSInteger deberían leerse,

 NSInteger myNSNUmber; // RIGHT NSInteger *myNSNUmber; // WRONG, NSInteger is not a struct, but it is a primitive data type. 

Lo siguiente se basa en la respuesta de @ BoltClock, que recientemente publicó aquí


Sin embargo, si necesita usar un puntero para un NSInteger (es decir, NSInteger *) por alguna razón, entonces necesita desreferencer el puntero para get el valor:

 if (*myNSNUmber == 11) { } 

NSInteger normalmente es un tipo int simple, por lo que su código debería funcionar bien.

si myNSNumber un object NSNumber (como sugiere el nombre de la variable), entonces debe extraer su valor int:

 if ([myNSNumber intValue] == 1) { ... }