Cómo agregar a un NSDictionary
Estaba usando un NSMutableArray
y me di cuenta de que usar un diccionario es mucho más simple para lo que estoy tratando de lograr.
Quiero guardar una clave como NSString
y un valor de int
en el diccionario. Cómo se hace esto? En segundo lugar, ¿cuál es la diferencia entre mutable y un diccionario normal?
5 answers
Un diccionario mutable se puede cambiar, es decir, puede agregar y eliminar objetos. Un inmutable se fija una vez que se crea.
Crear y añadir:
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];
Y recuperar:
int myNumber = [[dict objectForKey:@"A cool number"] intValue];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-01 17:01:39
Al configurar usarías el método setValue:(id)value forKey:(id)key
del objeto NSMutableDictionary
:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];
O en Objective-C moderno:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"age"] = @5;
La diferencia entre mutable y "normal" es, bueno, mutabilidad. Es decir, puedes alterar el contenido de NSMutableDictionary
(y NSMutableArray
) mientras que no puedes hacer eso con "normal" NSDictionary
y NSArray
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-11 05:46:02
Cuando se declara el array, entonces solo tenemos que agregar el valor clave en NSDictionary como
NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];
No podemos agregar o eliminar los valores clave en este NSDictionary
Donde como en NSMutableDictionary también podemos agregar los objetos después de la inicialización del array mediante el uso de este método
NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];'
[mutableDict setObject:@"Value1" forKey:@"Key1"];
[mutableDict setObject:@"Value2" forKey:@"Key2"];
[mutableDict setObject:@"Value3" forKey:@"Key3"];
Para eliminar el valor de la clave tenemos que usar el siguiente código
[mutableDict removeObject:@"Value1" forKey:@"Key1"];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-15 11:33:02
Actualización de la versión
Objective-C
Crear:
NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5};
Cambio:
NSMutableDictionary *mutableDictionary = [dictionary mutableCopy]; //Make the dictionary mutable to change/add
mutableDictionary[@"myKey3"] = @3;
La sintaxis abreviada se llama Objective-C Literals
.
Swift
Crear:
var dictionary = ["myKey1": 7, "myKey2": 5]
Cambio:
dictionary["myKey3"] = 3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-07 15:37:43
Lo que desea preguntar es "cuál es la diferencia entre una matriz o diccionario mutable y una no mutable."Muchas veces se usan diferentes términos para describir cosas que ya sabes. En este caso, puede reemplazar el término "mutable" por "dinámico."Por lo tanto, un diccionario o matriz mutable es uno que es "dinámico" y puede cambiar en tiempo de ejecución, mientras que un diccionario o matriz no mutable es uno que es "estático" y definido en su código y no cambia en tiempo de ejecución (en otras palabras, no añadirá, borrará o posiblemente ordenará los elementos.)
En cuanto a cómo se hace, nos está pidiendo que repitamos la documentación aquí. Todo lo que necesita hacer es buscar en el código de muestra y la documentación de Xcode para ver exactamente cómo se hace. Pero la cosa mutable también me tiró cuando estaba aprendiendo por primera vez, así que te voy a dar que uno!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-01 16:55:09