mazcunan
unread,Nov 21, 2010, 6:49:40 AM11/21/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to ios-spa
Hola a todos,
Por ir haciendo alguna cosa interesante. Esto es una de las cosas que
os pueden ser útiles y que no vimos en la última edición del curso. Si
vimos el selector compare: la mañana del Viernes, pero no como hacer
uso de el para crear un array ordenado ni como recuperar datos de un
archivo plist, que viene a ser un XML. Notar que todo lo que uso son
funciones NSxxxx, es decir, que pertenecen a Objective-C. Con esto
quiero decir que no sólo nos valen para el iOS sino también para la
programación con Objective-C en general (aunque Apple haya optimizado
el compilador gcc de sus sistemas, deberíais poder compilar con gcc en
cualquier sistema).
Podéis crear/editar archivos plist (XML, al fin y al cabo...) con la
herramienta Property List Editor que viene con el XCode.
Para cargar los datos en la aplicación, seguimos los siguientes pasos:
- Definir la ruta del archivo plist (pongamos archivo.plist)
NSString *ruta = [[NSBundle mainBundle] pathForResource: @"archivo"
ofType: @"plist"];
- Cargar los contenidos del archivo plist como un NSDictionary. El
tema es que ese archivo contendrá los datos parseados de forma que
podemos acceder a ellos mediante un sistema key/value.
NSDictionary *datos = [[NSDictionary alloc]
initWithContentsOfFile:ruta ];
- Para consultar los datos hemos de tener en cuenta la estructura del
archivo:
id dato = [datos objectForKey: @"etiqueta"];
- Podemos meter todas las etiquetas de un diccionario en un array
usando:
NSArray * array = [datos allKeys];
- Podemos ordenar los datos de un array de la siguiente manera:
NSArray * array = [[datos allKeys] sortedArrayUsingSelector:
@selector(compare:)];
- Para comparar una cadena A con una cadena B y saber si son iguales,
si se ordenan A B o si se ordenan B A hacemos lo siguiente:
BOOL iguales = NO;
if ([A compare:B] == NSOrderedSame) iguales = YES;
BOOL AB = NO;
if ([A compare:B] == NSOrderedAscending) AB = YES;
BOOL BA = NO;
if ([A compare:B] == NSOrderedDescending) BA = YES;