Buscar..


Sintaxis

  • @{ valor clave, ... }

  • [NSDictionary dictionaryWithObjectsAndKeys: value, key, ..., nil];

  • dict [ clave ] = valor ;

  • valor de id = dict [ clave ];

Observaciones

La clase NSDictionary declara la interfaz programática a los objetos que administran asociaciones inmutables de claves y valores. Utilice esta clase o su subclase NSMutableDictionary cuando necesite una forma conveniente y eficiente de recuperar datos asociados con una clave arbitraria. NSDictionary crea diccionarios estáticos, y NSMutableDictionary crea diccionarios dinámicos. (Por conveniencia, el término diccionario se refiere a cualquier instancia de una de estas clases sin especificar su pertenencia a la clase exacta).

Un par clave-valor dentro de un diccionario se llama una entrada. Cada entrada consta de un objeto que representa la clave y un segundo objeto que es el valor de esa clave. Dentro de un diccionario, las claves son únicas. Es decir, no hay dos claves en un solo diccionario iguales (según lo determinado por isEqual :). En general, una clave puede ser cualquier objeto (siempre que cumpla con el protocolo NSCopying; consulte a continuación), pero tenga en cuenta que cuando se utiliza la codificación de clave-valor, la clave debe ser una cadena (consulte Fundamentos de codificación de clave-valor). Ni una clave ni un valor pueden ser nulos; Si necesita representar un valor nulo en un diccionario, debe usar NSNull.

NSDictionary es un "puente gratuito" con su contraparte de Core Foundation, CFDictionaryRef. Consulte la sección Puente sin cargo para obtener más información sobre el puente sin cargo.

Creando utilizando literales.

NSDictionary *inventory = @{
    @"Mercedes-Benz SLK250" : @(13),
    @"BMW M3 Coupe" : @(self.BMWM3CoupeInventory.count),
    @"Last Updated" : @"Jul 21, 2016",
    @"Next Update"  : self.nextInventoryUpdateString
};

Creación utilizando dictionaryWithObjectsAndKeys:

NSDictionary *inventory = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithInt:13], @"Mercedes-Benz SLK250",
    [NSNumber numberWithInt:22], @"Mercedes-Benz E350",
    [NSNumber numberWithInt:19], @"BMW M3 Coupe",
    [NSNumber numberWithInt:16], @"BMW X6",
    nil];

nil debe pasarse como el último parámetro como centinela que indica el final.

Es importante recordar que al crear diccionarios de esta manera, los valores van primero y luego las claves. En el ejemplo anterior, las cadenas son las claves y los números son los valores. El nombre del método refleja esto también: dictionaryWithObjectsAndKeys . Si bien esto no es incorrecto, se prefiere la forma más moderna de instanciar diccionarios (con literales).

Creando utilizando plistas

NSString *pathToPlist = [[NSBundle mainBundle] pathForResource:@"plistName" 
    ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:pathToPlist];

Estableciendo un valor en NSDictionary

Hay varias formas de establecer el objeto de una clave en un NSDictionary, correspondiente a las formas en que obtiene un valor. Por ejemplo, para agregar un lamborghini a una lista de coches

Estándar

[cars setObject:lamborghini forKey:@"Lamborghini"];

Al igual que cualquier otro objeto, llame al método de NSDictionary que establece un objeto de una clave, objectForKey: Tenga cuidado de no confundir esto con setValue:forKey: Eso es para una cosa completamente diferente, Key Value Coding

Taquigrafía

cars[@"Lamborghini"] = lamborghini;

Esta es la sintaxis que utiliza para los diccionarios en la mayoría de los otros idiomas, como C #, Java y Javascript. Es mucho más conveniente que la sintaxis estándar, y posiblemente más legible (especialmente si codifica en estos otros idiomas), pero por supuesto, no es estándar . También está disponible solo en las versiones más recientes de Objective C

Obtener un valor de NSDictionary

Hay varias formas de obtener un objeto de un NSDictionary con una clave. Por ejemplo, para obtener un lamborghini de una lista de coches

Estándar

Car * lamborghini = [cars objectForKey:@"Lamborghini"];

Al igual que cualquier otro objeto, llame al método de NSDictionary que le da un objeto para una clave, objectForKey: Tenga cuidado de no confundir esto con valueForKey: Eso es para una cosa completamente diferente, Key Value Coding

Taquigrafía

Car * lamborghini = cars[@"Lamborghini"];

Esta es la sintaxis que utiliza para los diccionarios en la mayoría de los otros idiomas, como C #, Java y Javascript. Es mucho más conveniente que la sintaxis estándar, y posiblemente más legible (especialmente si codifica en estos otros idiomas), pero por supuesto, no es estándar . También está disponible solo en las versiones más recientes de Objective C

Compruebe si NSDictionary ya tiene una clave o no

C objetivo:

   //this is the dictionary you start with. 
 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name1", @"Sam",@"name2", @"Sanju",nil];

//check if the dictionary contains the key you are going to modify.  In this example, @"Sam"
if (dict[@"name1"] != nil) {
    //there is an entry for Key name1       
}
else {
    //There is no entry for name1       
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow