web-dev-qa-db-fra.com

NSMutableDictionary ajoutant des objets

Existe-t-il un moyen plus efficace d’ajouter des objets à un NSMutableDictionary qu’une simple itération?

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 c'est la façon dont cela doit être fait.

28
djt9000

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

dictionaryWithObjects:forKeys:

Bien sûr, cela vous donnera un dictionnaire immuable non modifiable. Cela dépend de votre utilisation et de celle dont vous avez besoin. Vous pouvez obtenir une copie mutable de NSDictionary, mais il semble plus simple d’utiliser votre code original dans ce cas: 

NSDictionary * dic = [NSDictionary dictionaryWith....];
NSMutableDictionary * md = [dic mutableCopy];
... use md ...
[md release];
15
stefanB
NSDictionary *entry = [NSDictionary dictionaryWithObjectsAndKeys:
  [NSNumber numberWithDouble:acceleration.x], @"x",
  [NSNumber numberWithDouble:acceleration.y], @"y",
  [NSNumber numberWithDouble:acceleration.z], @"z",
  [NSDate date], @"date", 
  nil];
20
Andrew Johnson

Permettez-moi d'ajouter des informations aux personnes qui commencent.

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

NSDictionary *dict = @{ 
    key1 : object1, 
    key2 : object2, 
    key3 : object3 };
8
Tiago Almeida
NSMutableDictionary *example = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@5,@"burgers",@3, @"milkShakes",nil];

Les objets viennent avant les clés.

0
Jeremiah Radich