Pregunta

¿Hay una manera más eficiente para agregar objetos a un diccionario NSMutable que la simple repetición?

Ejemplo:

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

Sólo por curiosidad, estoy seguro de que esta es la forma en que se tiene que hacer.

¿Fue útil?

Solución

Si usted tiene todos los objetos y las claves de antemano puede inicializar utilizando NSDictionary de:

dictionaryWithObjects:forKeys:

Por supuesto que esto le dará diccionario inmutable no mutable. Depende de su uso que uno necesita, puede obtener una copia mutable de NSDictionary pero parece más fácil simplemente utilizar el código original en caso de que:

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

Otros consejos

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

Permítanme añadir algo de información a las personas que están empezando.

Es posible crear un NSDictionary con una sintaxis más amigable con el objetivo-c literales :

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

Los objetos vienen antes de las llaves.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top