2009-07-12 8 views
28

Existe-t-il un moyen plus efficace d'ajouter des objets à un dictionnaire NSMutable qu'une simple itération?NSMutable Dictionary Ajout d'objets

Exemple:

// 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"]; 

Juste curieux, je suis sûr que ce soit la façon dont il doit être fait.

Répondre

15

Si vous avez tous les objets et les clés au préalable, vous pouvez l'initialiser à l'aide de NSDictionary:

dictionaryWithObjects:forKeys: 

Bien sûr, cela vous donnera le dictionnaire immuable non mutables. Cela dépend de votre utilisation lequel vous avez besoin, vous pouvez obtenir une copie mutable de NSDictionary mais il semble plus facile de utiliser votre code d'origine dans ce cas:

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

Merci pour le deuxième avis. Je voulais juste être sûr que je ne manquais de rien et voir s'il y avait quelque chose d'un peu plus efficace/élégant. – djt9000

+0

Je cherchais aussi une option pour initialiser NSMutableDictionary avec des objets et des clés comme vous pouvez le faire pour NSDictionary mais je ne trouve rien ... – 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

qui m'a aidé :) – grilix

8

Qu'il me soit permis d'ajouter des informations aux personnes qui commencent.

Il est possible de créer un NSDictionary avec une syntaxe plus amicale avec objective-c literals:

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

devrait vous mettre fin à la liste avec un néant? – vvMINOvv

+2

@vvMINOvv Pas besoin :). La même chose avec les littéraux NSArrays :) –

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

Les objets viennent avant les clés.

Questions connexes