miércoles, 23 de mayo de 2012

Plist iOS

Intr
Para esta entrada hablare sobre el uso y la importancia de un plist. Un plist en iOS es como un archivo .txt, donde nos puede servir para almacenar o leer datos, la diferencia de esta es que es manejada en un tipo de formato estructurado como xml o json.


Ventajas:
Una de sus fuertes ventajas es que la informacion estructurada en ella, le podemos dar un formato, ya sea que esta sea entera, flotante, String, un diccionario, entre otras.
Estos tipos de formatos son muy usadas en Xcode al momento de crear juegos, ya que podemos guardar la lista de objetos que iremos a crear o a utlizar, un ejemplo muy sencillo es el objeto de un guerrero, donde este guerrero, tiene una imagen, un icono, un sonido, armas, vida total, tamano, acciones, si es que le metemos un degradado, otra imagen donde lo podemos caracterizar con un movimiento, podemos guardar puntajes, entre otras.



Formatos:
number
bool
string
diccionario
array
data
date

XML
Xcode nos da la oportunidad de editar esto en formato xml en la cual lo encontramos como las siguientes etiquetas:
<string>
<real>, <integer>
<true />, or <false />
<date>
<data>
<array>
<dict>
<key>
view raw gistfile1.txt hosted with ❤ by GitHub


Imagen:

Importancia:
En ios nosotros podemos hacer el uso de este, para leerlo y poner direcciones de imagenes, directorio telefonico, entre otras

Ejemplo:
El codigo que pondre sera algo simple donde yo leere un plist e imprime los nombres

Codigo:
-(void)plistVista
{
NSString *path = [[NSBundle mainBundle] bundlePath]; //inicializamos el path
NSString *plistName = @"vistas.plist"; //Guardamos la direccion del archivo a leer
NSString *finalPath = [path stringByAppendingPathComponent:plistName]; //Leemos la direccion,
//guardandola en un string
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:finalPath]; //inicializamos el diccionario
int cplistData = plistData.count; //Contamos las filas que contiene nuestro plis de nodo padre
//Essto nos servira para leer cada linea
for(int i = 0; i < cplistData; i++) //Inicializamos el for para su lectura
{
NSDictionary *vistaMenu = [plistData objectForKey:[NSString stringWithFormat:@"v%d", i+1]]; //Abrimos el
//diccionario que tiene como nombre v[numero de la lista]
NSString *nombreVista = [vistaMenu objectForKey:@"nombre"]; //Guardamos el valor en la variable
NSLog(@"%@", nombreVista); //La imprimimos
}
}
view raw gistfile1.m hosted with ❤ by GitHub


Resultado:


Notas:
Es importante saber cuando tenemos un nodo padre y que este tiene hijos.
Nosotros los veremos cuando se utiliza un diccionario o un array y los hijos los veremos cuando usamos numeros, strings, booleanos entre otros:

Formas de accesar:
Nodo padre:
NSDictionary *nodoPadre= [plistData objectForKey:[NSString stringWithFormat:@"nodoPadre"]];

Nodo hijo:
NSString *nombreVista = [nodoPadre objectForKey:@"nombre"];


1 comentario: