2009-11-10 12 views
13

Come ho capito, in Objective-C è possibile inserire gli oggetti nei dizionari. Quindi se dovessi creare un dizionario, dovrebbe avere tutti gli oggetti. Ciò significa che ho bisogno di inserire i miei in come NSNumber, giusto?Memorizzazione di valori in un dizionario

Soo ...

NSNumber *testNum = [NSNumber numberWithInt:varMoney]; 


NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 
[dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"]; 
[dictionary setObject:@"Number two!" forKey:@"2"]; 
[dictionary setObject:testNum forKey:@"3"]; 


NSNumber *retrieved = [dictionary objectForKey:@"3"]; 
int newVarMoney = [retrieved intValue]; 

Dove varMoney è un int che è stato dichiarato in precedenza. La mia domanda è, c'è un modo migliore per memorizzare "int" in un dizionario piuttosto che inserirlo in un NSNumber?

Grazie!

Edit: 04/25/13

E 'passato molto tempo da quando ho fatto questa domanda. Per le persone che inciampano su di esso in futuro, ci sono modi più semplici per farlo con Apple LLVM Compiler 4.0, che è stato predefinito in Xcode per un po '. (ARC)

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 
[dictionary setObject:@1337 forKey:@"1"]; 

Questo è tutto, utilizzare la sintassi @ 1337 per creare rapidamente oggetti NSNumber. Funziona con le variabili, quindi il mio sopra potrebbe diventare:

[dictionary setObject:@(varMoney) forKey:@"3"]; 

o

dictionary[@"mykey"] = @1337; 

più semplice.

+2

È anche possibile fare dizionario [@ "1"] = @ 1337; – JuJoDi

risposta

18

Sei corretto, NSNumber è il modo normale di gestire questa situazione. È possibile utilizzare anche NSValue o NSDecimalNumber.

+1

Va bene, non pensavo ci fosse, quindi ora lo so. Grazie! –

0

Purtroppo nessun :(Non per quanto ne so. La ragione è che i numeri interi non sono oggetti, e NSDictionary solo negozi oggetti.

+0

Va bene, non pensavo che esistesse, quindi ora lo so. Grazie! –

5

Se siete disposti a ripiegare ad usare Nucleo Fondazione (CFDictionaries) si in grado di memorizzare tutto quello che vuoi. ho sicuramente fatto dizionari in cui ho messo i valori * vuoto arbitrari.

Hai bisogno di fare un po 'di più l'impianto idraulico, ma non molto, e tutti i suoi documentati.

Problemi correlati