Objective-C Language
NSDiccionario
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
}