Base

Base es el framework de las clases no visuales. Una breve descripción de algunas clases básicas se da a continuación. Por favor distingase el uso de métodos de clase y métodos de instancia. Además adviertase que cuando se crea una instancia, generalmente se utilizan constructores convenientes. Es decir, aquellos métodos que devuelven objetos autoliberados. Otras clase se describen en los siguientes enlaces:

NSArray

Esta clase maneja matrices de una columna para almacenar objetos. No puede contener valores nil (ya que estos se utilizan para delimitar un array), sin embargo, puede contener objetos NULL. El siguiente código muestra la creación de un array, conteniendo una lista de strings:

NSArray *lista = [NSArray arrayWithObjects: @"Maria", @"Juan", @"Francisco", @"Rosario", nil] ;

Una vez creado el array su contenido no puede ser cambiado. Si se desea un array más flexible vease la clase NSMutableArray. Los objetos almacenados pueden luego ser accedidos mediante su indice (su posición dentro del array comenzando desde la posición 0):

NSString *nombre = [lista objectAtIndex: 2] ;

También es posible obtener la posición dentro del array de un nombre determinado:

int posicion = [lista indexOfObject: @"Francisco"] ;

Si se desea realizar alguna operación sobre cada uno de los objetos contenidos en el array, puede obtenerse un objeto NSEnumerator (ver clase NSEnumerator):

NSEnumerator *comprobar = [lista objectEnumerator] ;

Es posible iniciar un array desde los datos contenidos en archivo. Por ejemplo:

NSArray *listaDos = [NSArray arrayWithContentsOfFile: @"listaNombres"] ;

El archivo de nombre listaNombres, debe tener extensión plist. Y debe ser de la siguiente forma:

( Carlos,

Maria,

Rosario,

Juan,

Pedro,

"Juana / Sara",

Hugo

)

La penúltima linea esta entre comillas debido a que contiene espacios vacíos, pero las comillas no formaran parte de la cadena ingresada al array.

La descripción de un objeto es un string con información del mismo. Si el objeto es un string la descripción es el mismo string. Es posible obtener la concatenación de las descripciones de los objetos contenidos en un array como se muestra a continuación:

NSString *descripcion = [listaDos componetsJoinedByString: @"-"] ;

En este ejemplo, las descripciones estarán separadas por el carácter guion medio (-).

NSDictionary

En un array un objeto puede accederse conociendo su posición dentro del array. Sin embargo, es aveces más conveniente identificar a un objeto no por su posición sino por una llave o identificador único. Esto es lo que hace un objeto NSDictionary:

NSNumber *llaveUno = [NSNumber numberWithInt: 1025] ;

NSArray *objetoUno = [NSArray arrayWithObjects: @"Carlos", @"25", @"hombre", @"40658152", @"Argentina", nil] ;

NSNumber *llaveDos = [NSNumber numberWithInt: 2307] ;

NSArray *objetoDos = [NSArray arrayWithObjects: @"Rocio", @"23", @"mujer", @"56894527", @"Honduras", nil] ;

NSDictionary *empleados = [NSDictionary dictionaryWithObjects: objetoUno, objetoDos, nil forKeys: llaveUno, llaveDos, nil] ;

En este ejemplo, la primer llave listada corresponde al primer objeto listado, etc. Observese además que la lista tanto de llaves como de objetos terminan con nil. Ahora, un array en particular puede accederse si tenemos su identificador o key:

NSNumber *llave = [NSNumber numberWithInt: 2307] ;

NSArray *empleado = [empleados objectForKey: llave] ;

NSString

La clase NSString nos permite almacenar y manipular cadenas de texto. El siguiente es un ejemplo de como crear un string llamado parque conteniendo la cadena El parque a Centroamerica:

NSString *parque = [NSString stringWithString: @"El parque a Centroamerica"];

Si se desea usar comillas dentro de una cadena, estas deben estar precedidas por un barra invertida, por ejemplo:

NSString *parque = [NSString stringWithString: @"El parque a \"Centroamerica\" "];

El espacio entre las dos últimas comillas esta solo para clarificar el código, pero no es necesario. La cadena de texto también puede contener datos de variables, por ejemplo:

NSString *info = [NSString stringWithFormat: @"La persona %s tiene edad %d", nombre, edad];

Donde %s indica la inclusión de un cstring (un string del lenguaje c, es decir una variable tipo char) y %d la inclusión de un entero. Dichos datos están contenidos en las variables nombre y edad, que aparecen al final en el orden correspondiente. También pueden incluirse datos numéricos tipo float o double con %f. Un string puede devolver un string de C, mediante el método cString. Por ejemplo, lo anterior pudo escribirse de la siguiente forma, donde Nombre es el objeto NSString que contiene el nombre que deseamos incluir:

NSString *info = [NSString stringWithFormat: @"La persona %s tiene edad %d", [Nombre cString], edad];

Si un string contiene un dato numérico, este puede obtenerse mediante los métodos intValue, floatValue o doubleValue. Los últimos dos devuelven el valor 0.0 si la cadena no contiene ningún dato numérico. El primer método, intValue, puede provocar un error si no hay un dato numérico en la cadena. Por otra parte, el método boolValue, devuelve YES cuando el escaneo de la cadena, de izquierda a derecha, encuentra un entero entre 1 y 9, o una de las siguientes letras: Y, y, T, t. En cualquier otro caso devuelve NO.

Un string puede iniciarse con el contenido de un archivo. Por ejemplo:

NSString *contenido = [NSString stringWithContentsOfFile: @"/etc/ejemplo.conf"];

Inicia un string con el contenido del archivo ejemplo.conf. Supongamos ahora que queremos agregar contenido a nuestro string inicial parque. Puede hacerse de la siguiente forma:

parque = [parque stringByAppendingString: @" en Quetzaltenango"];

Esto agrega el texto ” en Quetzaltenango” al final de la cadena original. La asignación mediante el signo =, es necesaria, ya que en realidad la clase NSString no se puede modificar una vez creada. Lo que en realidad se hace aquí, es reemplazar el string parque, con uno nuevo que consiste en la unión del antiguo string parque más la nueva cadena.

Otro método útil en ocasiones es stringByTrimmingSpaces, que elimina todos los espacios de la cadena. Con estos ejemplos queda claro como se manejan los objetos NSString y ya se podra experimentar con otros métodos disponibles en esta clase. Debe notarse que algunas veces puede ser más conveniente utilizar la clase NSMutableString en lugar de la clase NSString.