20
Curso de Iniciación a la Programación del iPhone SDK con Objective-C Datos en la aplicación Moncada, 9 de Julio de 2010

Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

Embed Size (px)

Citation preview

Page 1: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

Curso de Iniciación a la Programación del iPhone SDK con Objective-CDatos en la aplicación

Moncada, 9 de Julio de 2010

Page 2: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

2

Datos en la aplicación

- Sistema de archivos de una aplicación

- Accediendo a directorios

- Trabajando con rutas, 'paths'

- Bundles y recursos de la aplicación

- La clase NSBundle

- Obteniendo y almacenando datos

- Property lists

- NSXMLParser

- NSUserStandardDefaults

Page 3: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

3

Sistema de archivos de una aplicación

Cada aplicación tiene su propio conjunto de directorios

<Application Home>

MyApp.app

MyApp

MainWindow.nib

SomeImage.png

Documents

Library

Caches

Preferences

• Aplicaciones sólo pueden escribir en su directorio Home

Page 4: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

4

Trabajando con el sistema de directorios

- NSPathUtilities.h → Conjunto de categorías para trabajar con rutas del sistema de archivos de una aplicación

- Ejemplo (buscando el directorio Documents):

NSString *documentDirectory;

NSArray *paths = NSArray *paths = NSSearchPathForDirectoriesInDomains

(NSDocumentDirectory, NSUserDomainMask, YES);

documentsDirectory = [paths objectAtIndex:0];

Page 5: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

5

Bundles y recursos de la aplicación

- Es un directorio con una estructura jerárquica estandarizada que contiene código ejecutable y los recursos usados por ese código.

- Ventajas:

- Se trabaja igual que con ficheros

- Su estructura permite añadir recursos de diferentes idiomas fácilmente.

- Instalar/Desinstalar → Drag&Drop

- Múltiples arquitecturas y sistemas de ficheros

- Tipos: aplicación, plug-ins, frameworks, widgets...

Page 6: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

6

Bundles y recursos de la aplicación

Ejemplo de Application Bundle

MyApp.app

MyApp

Info.plist

Default.png

MainWindow.nib

Settings.bundle

en.lproj

MyImage.png

fr.lproj

MyImage.png

Page 7: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

7

Accediendo al contenido del bundle

Accediendo al bundle de la aplicación

NSBundle *bundle = [NSBundle mainBundle];

Obteniendo la ruta de un recurso en el bundle

NSBundle *bundle = [NSBundle mainBundle];

[bundle pathForResource:@”image” ofType:@”jpg”];

Page 8: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

8

Preferencias, Property Lists y XML

• Preferencias de usuario

– NSUserDefaults

– Settings y preferencias en la aplicación

• Property Lists

– Property Lists editor

– Leer y escribir Property Lists

• Obteniendo datos XML

- NSXMLParser y NSXMLParserDelegate

Page 9: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

9

Property Lists

Es una manera de representar jerarquías simples de datos Sólo soporta arrays, diccionarios, strings, fechas, enteros,

dobles y booleanos Una property list es una clase (array o diccionario) que engloba

uno o varios objetos soportados Representada con XML o con un binario (más compacto) Se usa para una cantidad menor de unos pocos cientos de

KBs

Page 10: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

10

Property Lists

Métodos para escribir

- (BOOL)writeToFile:(NSString *)aPath atomically:(BOOL)flag;

- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag;

Métodos para leer

- (id)initWithContentsOfFile:(NSString *)aPath;

- (id)initWithContentsOfURL:(NSURL *)aURL;

Page 11: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

11

Property Lists

Ejemplo de lectura (en el caso de NSArray):

NSString *path = [[NSBundle mainBundle] pathForResource:@"places" ofType:@"plist"];

NSArray *placesArray = [NSArray initWithContentsOfFile:path];

Page 12: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

12

Preferencias de usuario

• Dos tipos:

– Preferencias integradas en la aplicación

– Preferencias en la aplicación Settings

• Mutuamente exclusivas (¡Elige sólo un tipo!)

• Patrón de uso

– Opciones de configuración con poco uso → Settings

– Opciones de configuración regulares → Integradas

Page 13: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

13

Preferencias de usuario

Clase NSUserDefaults

– Método de clase → +(id)standardUserDefaults

– Es una Property List

Ejemplo de uso (insertar valor y recuperarlo)

NSUserDefaults *defaults = [NSUserDefaults standardUserFDefaults];

[defaults setObject:@”Pedro” forKey: @”name”];

NSString *nombre = [defaults stringForKey:@”name”];

Page 14: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

14

Settings Bundle

- Settings.bundle en tu aplicación sirve para añadir las preferencias a la aplicación Settings de iPhone/iPod/iPad

- Muestra una pantalla con controles

- Cada control tiene (al menos):

Tipo (Type)

Titulo (Title)

Clave (Key)

Page 15: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

15

Demostración

Page 16: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

16

NSXMLParser

Clase para parsear XML Dirigido por eventos Inicialización:

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];

[parser setDelegate:self];

[parser setShouldProcessNamespaces:NO];

[parser setShouldReportNamespacePrefixes:NO];

[parser setShouldResolveExternalEntities:NO];

[parser parse]; //empieza a parsear

Page 17: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

17

NSXMLParserDelegate

Métodos importantes

- didStartElement → Ha encontrado un tag de inicio. Ej, <item>

- didEndElement → Ha encontrado un tag de final. Ej, </item>

- foundCharacters → Ha encontrado una cadena entre <></>

- parserDidStartDocument → Ha empezado a parsear

- parserDidEndDocument → Ha acabado de parsear

Page 18: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

18

NSXMLParser

Patrón de diseño

1 Iniciar un objeto NSXMLParser y asignarle un delegado

2 didStartElement → Guardar el tag y reservar memoria estructura

3 didEndElement → Guardar valores en la estructura

4 foundCharacters → Guardar valor del tag

Page 19: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

19

Demostración

Page 20: Curso de Iniciación a la Programación del iPhone SDK con Objective-C. 8 - Datos en la aplicacion

20

Bibliografía

“Bundle Programming Guide”

“Property List Programming Guide”

“User Defaults Programming Topics”