2009-07-12 12 views
28

Esiste un modo più efficiente per aggiungere oggetti a un NSMutable Dictionary rispetto alla semplice iterazione?NSMutable Dizionario che aggiunge oggetti

Esempio:

// Create the dictionary 

NSMutableDictionary *myMutableDictionary = [NSMutableDictionary dictionary];  

// Add the entries 

[myMutableDictionary setObject:@"Stack Overflow" forKey:@"http://stackoverflow.com"]; 
[myMutableDictionary setObject:@"SlashDotOrg" forKey:@"http://www.slashdot.org"]; 
[myMutableDictionary setObject:@"Oracle" forKey:@"http://www.oracle.com"]; 

Solo per curiosità, sono sicuro che questo è il modo in cui deve essere fatto.

risposta

15

Se si dispone di tutti gli oggetti e le chiavi in ​​anticipo è possibile inizializzare utilizzando NSDictionary di:

dictionaryWithObjects:forKeys: 

Ovviamente questo vi darà dizionario immutabile non è mutabile. Dipende dal vostro utilizzo di quale avete bisogno, è possibile ottenere una copia mutabile da NSDictionary ma sembra più facile solo per utilizzare il codice originale in questo caso:

NSDictionary * dic = [NSDictionary dictionaryWith....]; 
NSMutableDictionary * md = [dic mutableCopy]; 
... use md ... 
[md release]; 
+0

Grazie per il secondo parere. Volevo solo essere sicuro che non mi mancasse nulla e vedere se c'era qualcosa di un po 'più efficiente/elegante. – djt9000

+0

Ero alla ricerca di un'opzione per inizializzare NSMutableDictionary con oggetti e chiavi come si può fare per NSDictionary ma non riesco a trovare nulla ... – stefanB

20
NSDictionary *entry = [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithDouble:acceleration.x], @"x", 
    [NSNumber numberWithDouble:acceleration.y], @"y", 
    [NSNumber numberWithDouble:acceleration.z], @"z", 
    [NSDate date], @"date", 
    nil]; 
+0

che mi ha aiutato a leggere :) – grilix

8

mi permetta di aggiungere alcune informazioni alle persone che stanno iniziando.

E 'possibile creare un NSDictionary con una sintassi più amichevole con objective-c literals:

NSDictionary *dict = @{ 
    key1 : object1, 
    key2 : object2, 
    key3 : object3 }; 
+0

si dovrebbe terminare la lista con un nulla? – vvMINOvv

+2

@vvMINOvv Non è necessario :). Lo stesso con i letterali NSArrays :) –

0
NSMutableDictionary *example = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@5,@"burgers",@3, @"milkShakes",nil]; 

Gli oggetti vengono prima le chiavi.

Problemi correlati