Procedura:Come confrontare un NSNumber in un caso
if (myNSNumber == 1)
{
...
}
Questo non sembra per costruire
L'oggetto:
Procedura:Come confrontare un NSNumber in un caso
if (myNSNumber == 1)
{
...
}
Questo non sembra per costruire
L'oggetto:
Se myNSNUmber è NSNumber
, il codice dovrebbe leggere,
if ([myNSNumber intValue] == 1) {
...
}
Se è NSInteger
, puoi confrontarlo direttamente con un intero letterale. Perché NSInteger
è un tipo di dati primitivo.
if (myNSNumber == 1) {
...
}
Nota: Assicurarsi che non si dispone di *
nella dichiarazione. I suoi NSInteger
dichiarazioni dovrebbero leggere,
NSInteger myNSNUmber; // RIGHT
NSInteger *myNSNUmber; // WRONG, NSInteger is not a struct, but it is a primitive data type.
Di seguito si basa su di @ BoltClock risposta, che ha recentemente pubblicato here
Tuttavia, se si ha bisogno di utilizzare un puntatore ad un NSInteger (vale a dire, NSInteger *) per qualche ragione, allora avete bisogno di dereference il puntatore per ottenere il valore:
if (*myNSNUmber == 11) {
}
NSNumber è una struttura, quindi non puoi confrontarla con un numero intero. Quello che Simon ha pubblicato è corretto. –
intValue non funziona - Ottengo un errore del ricevitore non valido – TheLearner
'myNSNumber' è NSInteger o' NSNumber'? Se è 'NSInteger' assicurati di non avere' * 'nella dichiarazione. – EmptyStack
NSInteger è normalmente un tipo int pianura in modo che il codice dovrebbe funziona bene
se myNSNumber un oggetto NSNumber (come nome di variabile suggerisce), allora si dovrebbe estrarre il suo valore int:
if ([myNSNumber intValue] == 1)
{
...
}
Il titolo non sembra giusto. Un test NSInteger dovrebbe essere compilato, penso che tu intenda NSNumber. – jv42
OK hai ragione le mie apoligie – TheLearner