2010-08-24 11 views
111

Prima di inserire il valore int nel dizionario ho impostato il valore int come [NSNumber numberWithInt: 2], ora quando cerco di recuperare il contenuto del dizionario, lo voglio di nuovo in int formato .. hw per fare questo ??come convertire NSNumber in int in Objective-C

ecco il mio codice;

NSMutabelDictionary *dict = [[NSMutableDictionary alloc]init]; 
int intValue = 300; 

[dict setObject:[NSNumber numberWithInt:intValue] forKey:@"integer"]; 

retriving .........

int number = [dict ObjectForKey:@"integer"]; 

.. viene generata un'eccezione è necessaria fusione sayin .. quando lo faccio in questo modo ..

int number = (int)[dict ObjectForKey:@"integer"]; 

stil non funziona ...

come risolvere questo problema?/

suggerire prego ..

risposta

182

Date un'occhiata al documentation. Utilizzare il metodo intValue:

int number = [[dict objectForKey:@"integer"] intValue]; 
+2

Il nome del metodo è 'objectForKey: ', non' ObjectForKey: '(c'è una differenza). – dreamlax

+0

@dreamlax: è stato un errore di copia e incolla, grazie. –

+0

La conversione implicita non è consentita con ARC. – Alexander

53

si dovrebbero usare per i tipi di dati NSInteger quando possibile. Quindi, ci si crea il numero del genere:

NSInteger myValue = 1; 
NSNumber *number = [NSNumber numberWithInteger: myValue]; 

decodifica lavora con il metodo integerValue poi:

NSInteger value = [number integerValue]; 
+0

Perché dovrebbe attenersi a "NSInteger"? –

+0

'NSInteger' è un tipo primitivo che è ** molto ** più veloce durante l'esecuzione che' NSNumber' che è un oggetto. –

+0

E qual è 'int'? Anche un primitivo? –

0

Un approccio meno verbose:

int number = [dict[@"integer"] intValue];