SlideShare una empresa de Scribd logo
1 de 24
9 - PERSISTENCIA Y
               COREDATA
Curso de desarrollo de aplicaciones móviles para iPhone y iPad

                 endika.gutierrez@urbegi.com
                   alex.rayon@urbegi.com

                                      Urbegi Learning
                                         Contents
CONTENIDO


• Introducción

• User   Defaults

• Core   Data
CONTENIDO


   • Introducción

• User   Defaults

• Core   Data
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
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...
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
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
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
INTRODUCCIÓN 6

• Un   ejemplo de la lectura de un fichero podría ser

// Obtenemos el listados de directorios
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
// El primero será el empleado
NSString *documentsDirectory = [paths objectAtIndex:0];

// Construimos la ruta
NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt",
                                      documentsDirectory];
// Leemos el fichero
NSString *content = [[NSString alloc] initWithContentsOfFile:fileName
                                           usedEncoding:NSUTF8StringEncoding
                                                       error:nil];
CONTENIDO


• Introducción

   • User   Defaults

• Core   Data
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
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
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
USER DEFAULTS 4

• Un   ejemplo de almacenaje de información

// Obtenemos el UserDefaults
NSUserDefaults *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];
USER DEFAULTS 5

• Para   recuperar la información


// Obtenemos el UserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// obtenemos un objeto genérico
id obj = [defaults objectForKey:@"Objeto"];
// Almacenamos un booleano
BOOL b = [defaults boolForKey:@"False"];
// Almacenamos un número
float f = [defaults floatForKey:@"Altura"];
CONTENIDO


• Introducción

• User   Defaults

   • Core    Data
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
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
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
CORE DATA 4
• Cuandocreamos un projecto debemos indicarle que
 emplearemos CoreData
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
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
CORE DATA 6
• Podemos   editar el fichero . xcdatamodeld de manera visual
FIN

Más contenido relacionado

Destacado (8)

Ios.s13
Ios.s13Ios.s13
Ios.s13
 
Ios.s8
Ios.s8Ios.s8
Ios.s8
 
Ios.s7
Ios.s7Ios.s7
Ios.s7
 
Ios.s6
Ios.s6Ios.s6
Ios.s6
 
Ios.s10
Ios.s10Ios.s10
Ios.s10
 
Ios.s4
Ios.s4Ios.s4
Ios.s4
 
Ios.s14
Ios.s14Ios.s14
Ios.s14
 
Ios.s3
Ios.s3Ios.s3
Ios.s3
 

Similar a Ios.s9

Presentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexPresentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uex
victoruex
 
Actividad base de datos
Actividad base de datos  Actividad base de datos
Actividad base de datos
Juliana Vargas
 

Similar a Ios.s9 (20)

Base de datos
Base de datosBase de datos
Base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Ios.s2
Ios.s2Ios.s2
Ios.s2
 
Tipos de almacenamiento android básico sesion2
Tipos de almacenamiento android básico sesion2Tipos de almacenamiento android básico sesion2
Tipos de almacenamiento android básico sesion2
 
OVA DISEÑO ORACLE II Administración.pptx
OVA DISEÑO ORACLE II Administración.pptxOVA DISEÑO ORACLE II Administración.pptx
OVA DISEÑO ORACLE II Administración.pptx
 
Base de datos guia 1
Base de datos guia 1Base de datos guia 1
Base de datos guia 1
 
Preact4.claudio.
Preact4.claudio.Preact4.claudio.
Preact4.claudio.
 
Pagina 52
Pagina 52Pagina 52
Pagina 52
 
Base De Datos Orientada A Objetos
Base De Datos Orientada A ObjetosBase De Datos Orientada A Objetos
Base De Datos Orientada A Objetos
 
Presentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexPresentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uex
 
Sesion uno azuay
Sesion uno azuaySesion uno azuay
Sesion uno azuay
 
Repositorio
RepositorioRepositorio
Repositorio
 
3.sistema de archivos
3.sistema de archivos3.sistema de archivos
3.sistema de archivos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Actividad base de datos
Actividad base de datos  Actividad base de datos
Actividad base de datos
 
Actividad base de datos
Actividad base de datos  Actividad base de datos
Actividad base de datos
 
Proyecto Final
Proyecto FinalProyecto Final
Proyecto Final
 
02 base de datos hernandez_luis
02 base de datos hernandez_luis02 base de datos hernandez_luis
02 base de datos hernandez_luis
 
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADEstructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
 

Ios.s9

  • 1. 9 - PERSISTENCIA Y COREDATA Curso 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 directorios NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // El primero será el empleado NSString *documentsDirectory = [paths objectAtIndex:0]; // Construimos la ruta NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", documentsDirectory]; // Leemos el fichero NSString *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 UserDefaults NSUserDefaults *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 UserDefaults NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; // obtenemos un objeto genérico id obj = [defaults objectForKey:@"Objeto"]; // Almacenamos un booleano BOOL b = [defaults boolForKey:@"False"]; // Almacenamos un número float 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

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n