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
un valor y un valor int
en el diccionario. ¿Cómo se hace esto? En segundo lugar, ¿cuál es la diferencia entre un diccionario mutable y un diccionario normal?
iphone
objective-c
nsdictionary
sistema
fuente
fuente
Al configurar, usarías el
setValue:(id)value forKey:(id)key
método deNSMutableDictionary
objeto:NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; [dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];
O en el moderno Objective-C:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; dict[@"age"] = @5;
La diferencia entre mutable y "normal" es, bueno, mutabilidad. Es decir, puede modificar el contenido de
NSMutableDictionary
(yNSMutableArray
) mientras que no puede hacerlo con "normal"NSDictionary
yNSArray
fuente
[{image: "/path/to/img/1.jpg", data: "foo bar 1"}, {image: "/path/to/img/2.jpg", data: "foo bar 2"}, ..., {image: "/path/to/img/N.jpg", data: "foo bar N"}]
Cuando alguna vez se declara la matriz, solo tenemos que agregar los valores-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, podemos agregar los objetos después de la inicialización de la matriz también usando 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 clave tenemos que usar el siguiente código
[mutableDict removeObject:@"Value1" forKey:@"Key1"];
fuente
Versión actualizada
C objetivo
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
.Rápido
Crear:
var dictionary = ["myKey1": 7, "myKey2": 5]
Cambio:
dictionary["myKey3"] = 3
fuente
Lo que quiere preguntar es "cuál es la diferencia entre una matriz o diccionario mutable y no mutable". Muchas veces se utilizan diferentes términos para describir cosas que ya conoce. En este caso, puede reemplazar el término "mutable" por "dinámico". Por lo tanto, un diccionario o matriz intercambiable 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 está definido en su código y no cambia en tiempo de ejecución (en otras palabras , no agregará, eliminará ni posiblemente clasificará los elementos).
En cuanto a cómo se hace, nos solicita que repitamos aquí la documentación. 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 sorprendió cuando estaba aprendiendo por primera vez, ¡así que te daré esa!
fuente
Como referencia, también puede utilizar
initWithDictionary
para iniciarNSMutableDictionary
con uno literal:NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{ @"touch": @0, @"app": @0, @"back": @0, @"volup": @0, @"voldown": @0 }];
fuente