viernes, 2 de noviembre de 2012

Objective-C


Diccionarios:



Los diccionario cumplen un propósito similar a los arreglos, almacenar información, excepto que cada objeto almacenado en el diccionario está asociada con una clave única (para ser más precisos, la clave es única para el objeto de diccionario particular). La clave única (key) puede ser de cualquier tipo de objeto, aunque para ser útil por lo general son cadenas.

En Objective-C los objetos de tipo diccionario se crean utilizando las clases NSDictionary y NSMutableDictionary. Los objetos NSDictionary ​​son inmutables (en otras palabras, una vez que se han creado e inicializado su contenido no se puede modificar).

Los diccionarios que se pueden modificar en tiempo de ejecución son instanciados de la clase NSMutableDictionary y puede ser modificada después de la creación y la inicialización.


Creación de objetos de diccionario


Un objeto diccionario "inmutable" (para seguir con la terminología de Apple) se puede crear de la siguiente manera:


NSDictionary *miDiccionario = [NSDictionary dictionary];


Un objeto diccionario que se pueda modificar en tiempo de ejecución, es decir, mutable (no mutante) se crea de la siguiente forma:


NSMutableDictionary *miDiccionario = [NSMutableDictionary dictionary];


Crear y poblar un objeto diccionario



Cada par de clave-valor contenido dentro de un diccionario se refiere a una entrada. Una vez que una relación entre una clave y un valor se ha establecido, la relación no se pueden modificar en tiempo de ejecución.

Las nuevas entradas se agregan a un diccionario utilizando el método de instancia setObject. Este método toma como argumentos un objeto y una tecla correspondiente:


NSMutableDictionary *misLibros = [NSMutableDictionary dictionary];

[misLibros setObject: @"La guerra y la paz"  forKey: @"100-432112"];
[misLibros setObject: @"Crimen y castigo" forKey:  @"200-532874"];
[misLibros setObject: @"Cien años de soledad" forKey:  @"202-546549"];
[misLibros setObject: @"La guerra de los mundos" forKey: @"104-109834"];




También es posible crear e inicializar un diccionario con un número de pares de clave-valor utilizando el método de la clase dictionaryWithObjectsAndKeys. Por ejemplo, una alternativa al código anterior es como sigue:


NSDictionary *misLibros = [NSDictionary dictionaryWithObjectsAndKeys: @"La guerra y la paz", @"100-432112", @"Crimen y castigo", @"200-532874", @"Cien años de soledad", @"202-546549", @"La guerra de los mundos", @"104-109834", nil];


Los diccionarios también se pueden poblar utilizando claves-valores contenidos en los arreglos utilizando el método arrayWithObjects:


NSArray *objectsArray = [NSArray arrayWithObjects: @"La guerra y la paz", @"Crimen y castigo", @"Cien años de soledad", @"La guerra de los mundos", nil];
NSArray *keysArray = [NSArray arrayWithObjects: @"100-432112", @"200-532874", @"202-546549", @"104-109834", nil];

NSDictionary *miLibros = [[NSDictionary alloc] initWithObjects: objectsArray  forKeys: keysArray];


Número de elementos en un diccionario


Para obtener el número de elementos de un diccionario, utilizamos el método count:


NSLog (@"Los libros en la lista son = %lu", [misLibros count]);


Acceder a los datos de un diccionario

Para acceder a los datos de un diccionario se hace referencia a la llave correspondiente a la entrada deseada mediante el método objectForKey. Por ejemplo:


NSLog ( @"100-432112 = %@", [misLibros objectForKey: @"100-432112"]);
NSLog ( @"200-532874 = %@", [misLibros objectForKey: @"200-532874"]);
NSLog ( @"202-546549 = %@", [misLibros objectForKey: @"202-546549"]);
NSLog ( @"104-109834 = %@", [misLibros objectForKey: @"104-109834"]);


Borrar un elemento del diccionario

Podemos borrar entradas específicas del diccionario mediante referencia a la llave como argumento al método removeObjectForKey. Por ejemplo, para eliminar la entrada de un libro, podemos escribir el siguiente código:


[misLibros removeObjectForKey: @"104-109834"];


Para eliminar todo el contenido de un diccionario utilizamos:


[misLibros removeAllObjects];

















No hay comentarios:

Publicar un comentario