• Like
Ios.s9
Upcoming SlideShare
Loading in...5
×
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
345
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
5
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. 9 - PERSISTENCIA Y COREDATACurso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
  • 2. CONTENIDO• Introducción• User Defaults• Core Data
  • 3. CONTENIDO • Introducción• User Defaults• Core Data
  • 4. INTRODUCCIÓN• En la aplicaciones complejas se hace crítico la persistencia de la infromación• Existen diversas formas de afrontar esta cuestión • La más sencilla es el almacenaje simple en el sistema de ficheros
  • 5. INTRODUCCIÓN 2• Existentécnicas cada vez más refinadas para la persistencia de la información • Ficheros XML, Listas clave-valor, Bases de Datos SQL, NoSQL, ORM...
  • 6. INTRODUCCIÓN 3• iOS provee de varias maneras de gestionar la persistencia • En Ficheros dentro del sistema de ficheros • En Listas clave-valor • En Ficheros XML • En Bases de Datos SQLite
  • 7. INTRODUCCIÓN 4• Parael almacenaje de ficheros iOS proporciona un directorio exclusivo para cada aplicación que es almacenado dentro del bundle de la app• Dentro de ese directorio podremos escribir cuanto queramos • Fuera del directorio la escriturá esta prohibida• El directorio se borrará al borrar la aplicación
  • 8. INTRODUCCIÓN 5• Laescritura de ficheros dentro del sistema es igual a la de cualquier sistema UNIX • Objective-C Nos proporciona diversas herramientas para integrar la escritura dentro de su API
  • 9. INTRODUCCIÓN 6• Un ejemplo de la lectura de un fichero podría ser// Obtenemos el listados de directoriosNSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);// El primero será el empleadoNSString *documentsDirectory = [paths objectAtIndex:0];// Construimos la rutaNSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", documentsDirectory];// Leemos el ficheroNSString *content = [[NSString alloc] initWithContentsOfFile:fileName usedEncoding:NSUTF8StringEncoding error:nil];
  • 10. CONTENIDO• Introducción • User Defaults• Core Data
  • 11. USER DEFAULTS• Userdefaults es una clase que nos permite almacenar datos con clave-valor• Esun sistema de almacenamiento sencillo pensando originalmente para almacenar la preferencias de usuario• Los datos se vuelcan a un XML de tipo Property List• Deja de ser eficiente para grandes cantidades de datos
  • 12. USER DEFAULTS 2• Asocia valores a claves • Las claves han de ser Strings • Losvalores pueden ser tipos sencillos: NSNumber, NSString, NSDate •Ó tipos complejos complejos como NSArray ó NSDictionary • Siempreque se cumpla que los elementos de estos sean de estos mismos tipos
  • 13. USER DEFAULTS 3• Su utilización es sencilla• Similar a como funciona un diccionario pero siendo de la clase NSUserDefaults• Existe uno por defecto y podemos crear tantos como queramos para cada usuario
  • 14. USER DEFAULTS 4• Un ejemplo de almacenaje de información// Obtenemos el UserDefaultsNSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];// Almacenamos un objeto genérico[defaults setValue:resp forKey:@"Objeto"];// Almacenamos un booleano[defaults setBool:NO forKey:@"False"];// Almacenamos un número[defaults setFloat:7.0f forKey:@"Altura"];// Salvamos los cambios[defaults synchronize];
  • 15. USER DEFAULTS 5• Para recuperar la información// Obtenemos el UserDefaultsNSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];// obtenemos un objeto genéricoid obj = [defaults objectForKey:@"Objeto"];// Almacenamos un booleanoBOOL b = [defaults boolForKey:@"False"];// Almacenamos un númerofloat f = [defaults floatForKey:@"Altura"];
  • 16. CONTENIDO• Introducción• User Defaults • Core Data
  • 17. CORE DATA• CoreData es un framework de Cocoa y Cocoa Touch que proporciona un ORM para Objective-C y SQLite • Un ORM es un mapeador de objetos del lenguaje a tuplas en la base de datos • Gestiona todas las relacciones con la BBDD
  • 18. CORE DATA 2• Cada clase es representado por una tabla en la base de datos• Cada objeto por una fila en la BBDD• Cada atributo por un campo en una fila
  • 19. CORE DATA 3• CoreData es el encargado de volcar los cambios en la BBDD• Tambiénes responsable de borrar y crear nuevos objetos en la BBDD según se vayan necesitando• Por lo tanto abstrae el programador de todo acceso a la BBDD
  • 20. CORE DATA 4• Cuandocreamos un projecto debemos indicarle que emplearemos CoreData
  • 21. CORE DATA 5• Esto cambiará en cierto modo el AppDelegate con los trozos de código para gestionar todos los eventos de CoreData@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;- (void)saveContext;- (NSURL *)applicationDocumentsDirectory;@end
  • 22. CORE DATA 5• Estosnuevos métodos, en principio, no tendremos que tocarlos• También nos habrá creado un fichero .xcdatamodeld • Eneste fichero diseñaremos el modelo de datos de la base de datos
  • 23. CORE DATA 6• Podemos editar el fichero . xcdatamodeld de manera visual
  • 24. FIN