iphone - nsdictionary to object swift
Cómo agregar a un NSDictionary (5)
Estaba usando un NSMutableArray
y me di cuenta de que usar un diccionario es mucho más simple para lo que intento lograr.
Quiero guardar una clave como NSString
y un valor como int
en el diccionario. ¿Cómo se hace esto? En segundo lugar, ¿cuál es la diferencia entre mutable y un diccionario normal?
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 de mano corta se llama Objective-C Literals
.
Rápido
Crear:
var dictionary = ["myKey1": 7, "myKey2": 5]
Cambio:
dictionary["myKey3"] = 3
Al establecer usaría setValue:(id)value forKey:(id)key
método de setValue:(id)value forKey:(id)key
del objeto NSMutableDictionary
:
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
(y NSMutableArray
) mientras que no puede hacerlo con NSDictionary
y NSArray
"normales".
Cuando alguna vez se declara la matriz, entonces solo tenemos que agregar la clave-valor 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"];
Lo que quiere preguntar es "¿cuál es la diferencia entre una matriz o un diccionario mutable y no mutable"? Muchas veces se usan diferentes términos para describir cosas que ya conoces. En este caso, puede reemplazar el término "mutable" por "dinámico". Entonces, un diccionario o matriz mutuable es uno que es "dinámico" y puede cambiar en tiempo de ejecución, mientras que un diccionario o matriz no mutable es uno "estático" y definido en su código y no cambia en tiempo de ejecución (en otras palabras , no agregará, eliminará o posiblemente clasificará 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 arrojó cuando estaba aprendiendo, ¡así que te daré esa!
Se puede cambiar un diccionario mutable , es decir, puede agregar y eliminar objetos. Un inmutable se repara una vez que se crea.
crear y agregar:
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];