2009-11-24 8 views
7

Quindi il mio problema è questo:Objective-C - Confronto di numeri interi che non funzionano come previsto

Sto ricevendo una stringa JSON da tutta la rete. Quando decodificato (usando le librerie SBJSON), diventa un NSDictionary che DOVREBBE contenere un numero di qualche tipo per la chiave 'userid'. Dico "dovrebbe" perché quando confronto il valore con un int, o con un NSINTEGER o NSNumber, non viene mai valutato correttamente.

ecco il confronto in codice:

NSDictionary *userDictionary = [userInfo objectAtIndex:indexPath.row]; 

if ([userDictionary objectForKey:@"userid"] == -1) { 
//Do stuff 
} 

Il valore all'interno del dizionario sto testando con è -1. Quando lo stampo per console usando NSLog, mostra anche che è -1. Tuttavia, quando lo paragono a -1 nell'istruzione "se", esso diventa falso quando dovrebbe essere vero. Ho persino provato a confrontare [NSNumber numberWithInt: -1], e continua a essere falso.

Cosa sto sbagliando? Grazie in anticipo per il vostro aiuto!

risposta

16

Si sta confrontando un puntatore a un oggetto, non un intero stesso. Devi prima convertire l'oggetto in un numero intero:

if ([[userDictionary objectForKey:@"userid"] integerValue] == -1) 
{ 
    //Do stuff 
} 
Problemi correlati