You are on page 1of 20

Curso de Iniciacin a la Programacin del iPhone SDK con Objective-C

Datos en la aplicacin

Moncada, 9 de Julio de 2010

Datos en la aplicacin

- Sistema de archivos de una aplicacin - Accediendo a directorios - Trabajando con rutas, 'paths' - Bundles y recursos de la aplicacin - La clase NSBundle - Obteniendo y almacenando datos - Property lists - NSXMLParser - NSUserStandardDefaults

Sistema de archivos de una aplicacin

Cada aplicacin tiene su propio conjunto de directorios <Application Home>

MyApp.app
MyApp MainWindow.nib SomeImage.png

Documents
Library Caches Preferences

Aplicaciones slo pueden escribir en su directorio Home

Trabajando con el sistema de directorios

- NSPathUtilities.h Conjunto de categoras para trabajar con rutas del sistema de archivos de una aplicacin - Ejemplo (buscando el directorio Documents): NSString *documentDirectory; NSArray *paths = NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); documentsDirectory = [paths objectAtIndex:0];

Bundles y recursos de la aplicacin

- Es un directorio con una estructura jerrquica estandarizada que contiene cdigo ejecutable y los recursos usados por ese cdigo. - Ventajas: - Se trabaja igual que con ficheros - Su estructura permite aadir recursos de diferentes idiomas fcilmente. - Instalar/Desinstalar Drag&Drop - Mltiples arquitecturas y sistemas de ficheros - Tipos: aplicacin, plug-ins, frameworks, widgets...

Bundles y recursos de la aplicacin

Ejemplo de Application Bundle


MyApp.app

MyApp
Info.plist Default.png MainWindow.nib Settings.bundle en.lproj MyImage.png fr.lproj MyImage.png

Accediendo al contenido del bundle

Accediendo al bundle de la aplicacin NSBundle *bundle = [NSBundle mainBundle]; Obteniendo la ruta de un recurso en el bundle NSBundle *bundle = [NSBundle mainBundle]; [bundle pathForResource:@image ofType:@jpg];

Preferencias, Property Lists y XML

Preferencias de usuario NSUserDefaults Settings y preferencias en la aplicacin Property Lists Property Lists editor Leer y escribir Property Lists Obteniendo datos XML - NSXMLParser y NSXMLParserDelegate

Property Lists

Es una manera de representar jerarquas simples de datos Slo 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 (ms compacto) Se usa para una cantidad menor de unos pocos cientos de KBs

Property Lists

Mtodos para escribir

- (BOOL)writeToFile:(NSString *)aPath atomically:(BOOL)flag; - (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag; Mtodos para leer

- (id)initWithContentsOfFile:(NSString *)aPath; - (id)initWithContentsOfURL:(NSURL *)aURL;

10

Property Lists

Ejemplo de lectura (en el caso de NSArray):


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

11

Preferencias de usuario

Dos tipos: Preferencias integradas en la aplicacin Preferencias en la aplicacin Settings

Mutuamente exclusivas (Elige slo un tipo!) Patrn de uso Opciones de configuracin con poco uso Settings Opciones de configuracin regulares Integradas

12

Preferencias de usuario

Clase NSUserDefaults Mtodo 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];

13

Settings Bundle

- Settings.bundle en tu aplicacin sirve para aadir las preferencias a la aplicacin Settings de iPhone/iPod/iPad

- Muestra una pantalla con controles


- Cada control tiene (al menos): Tipo (Type) Titulo (Title) Clave (Key)

14

Demostracin

15

NSXMLParser

Clase para parsear XML Dirigido por eventos Inicializacin:

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; [parser setDelegate:self]; [parser setShouldProcessNamespaces:NO]; [parser setShouldReportNamespacePrefixes:NO]; [parser setShouldResolveExternalEntities:NO]; [parser parse]; //empieza a parsear

16

NSXMLParserDelegate

Mtodos 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

17

NSXMLParser

Patrn de diseo 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

18

Demostracin

19

Bibliografa

Bundle Programming Guide Property List Programming Guide User Defaults Programming Topics

20