iphone objective-c nsdictionary

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