Cómo:Cómo comparar un NSNumber en un caso
if (myNSNumber == 1)
{
...
}
Esto no parece construir
El objeto:
Cómo:Cómo comparar un NSNumber en un caso
if (myNSNumber == 1)
{
...
}
Esto no parece construir
El objeto:
Si myNSNUmber es NSNumber
, el código debe leer,
if ([myNSNumber intValue] == 1) {
...
}
Si es NSInteger
, puede compararlo directamente con un literal entero. Porque NSInteger
es un tipo de datos primitivo.
if (myNSNumber == 1) {
...
}
Nota: Asegúrese de que usted no tiene *
en su declaración. Sus NSInteger
declaraciones deben leer,
NSInteger myNSNUmber; // RIGHT
NSInteger *myNSNUmber; // WRONG, NSInteger is not a struct, but it is a primitive data type.
se basa el siguiente en respuesta @ de BoltClock, que se ha publicado recientemente here
Sin embargo, si usted necesita usar un puntero a un NSInteger (es decir, NSInteger *) por alguna razón, entonces usted necesita para eliminar la referencia al puntero para obtener el valor:
if (*myNSNUmber == 11) {
}
NSNumber es una estructura, por lo que no puedes compararla con un número entero. Lo que Simon ha publicado es correcto. –
intValue no funciona - Recibo un error de receptor no válido – TheLearner
'myNSNumber' es NSInteger o' NSNumber'? Si es 'NSInteger', asegúrese de no tener' * 'en la declaración. – EmptyStack
NSInteger es normalmente un tipo int normal por lo que su código debe trabaja bien.
si myNSNumber un objeto NSNumber (como nombre de la variable indica), entonces usted debe extraer su valor int:
if ([myNSNumber intValue] == 1)
{
...
}
El título no parece correcto. Una prueba de NSInteger compilaría, creo que te refieres a NSNumber. – jv42
OK, tienes razón mis apoligies – TheLearner