SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Usando Core Data
el poder de la simplicidad
         Vicente Vicens
        Imathink World
Core Data es un
framework de Cocoa que
       provee de una
  infraestructura para la
gestión de la colección de
 objetos y la persistencia
Core Data no es una base
 de datos relacional o un
         RDBMS
• Deshacer y Rehacer
• Validación automática de valores de propiedades
• Propagación de cambios y consistencia de
  relaciones entre objetos

• Agrupado, filtrado y organización de los datos en
  memoria y en la UI

• Soporte automático para guardar los objetos en
  repositorios de datos externos

• Integración opcional con Cocoa Bindings para dar
  soporte a la sincronización automática con la UI
Mac OS X
Sí   Tiger

Sí   Leopard

Sí   Snow Leopard
iPhone OS

 No    2.x


 NDA   3.x
Cocoa Bindings
• Core Data trabaja perfectamente
  con Cocoa Bindings

 • Key Value Coding
 • Key Value Observing
• Propiedades
Key Value Coding
• Nos permite acceder a los atributos
  de un objeto sin tener que llamar
  directamente a sus “accessors”
Recipe *myRecipe = [[Recipe alloc] init];

NSString *recipeName = [myRecipe valueForKey:@”name”];

[myRecipe setValue:@”Tortilla de patatas” forKey:@”name”];
Key Value Observing
• Nos permite obtener notificaciones
   cuando un atributo ha cambiado
static NSString *observer = @"Observer"
id myRecipe = ...
[myRecipe addObserver:self
               forKeyPath:@"name"
               options:(NSKeyValueObservingOptionNew|
               NSKeyValueObservingOptionOld)
               context:observer];


- (void)observeValueForKeyPath:(NSString*)keyPath
               ofObject:(id)object
               change:(NSDictionary*)change
               context:(void*)context;
Propiedades
• Con Leopard y iPhone OS
• Son KVC compatibles
@interface MyObject: NSObject
{
    NSString *myString;
}
@property (retain) NSString *myString;
@end

#import “MyObject.h”
@implementation MyObject
@synthesize myString;
@end
Employee
 Employee         Department
                   Department
  Employee




 NSManagedObjectContext




NSPersistentStoreCoordinator    NSManagedObjectModel




   Persistent Object Store              File
Subclassing NSManagedObject
 • Crear “accessors” para atributos y
    relaciones

 • Las relaciones To-Many devuelven NSSet
 • Métodos personalizados
 @interface Recipe : NSManagedObject {
     // No se definen los iVars.
 }
 @property (assign) NSString *title;
 @end

 #import “Recipe.h”
 @implementation Recipe
 @dynamic title;
 @end
NSFetchRequest
• Se pueden crear en el modelo o en código
• NSPredicate y NSSortDescriptor
NSManagedObjectContext *myMoc = [self managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription
               entityWithName:@"Department"
               inManagedObjectContext:myMoc]];

NSError *error = nil;
NSArray *results = [myMoc executeFetchRequest:request
error:&error];

if (error) {
    [NSApp presentError:error];
    return;
}
Performance Tunning

• Normalización versus desnormalización
• Cuando guardar

- (BOOL)hasChanges;

- (BOOL)save:(NSError **)error;
Persistent Store Types
                 SQLite
                 Binary
                  XML
              In-Memory
API para crear Atomic Stores personalizados
Otros Temas

• Versionado y migración
• Deshacer y Rehacer
• Integración con Spotlight y Quick Look
• Sync Services
• Multithreading
• Aplicaciones distribuidas
Apple Documentation

• Core Data Programming Guide
• Atomic Store Programming Topics
• Creating a Managed Object Model with Xcode
• XCode Tools for Core Data
• Core Data Framework Reference
• Tutorials
Other Books

Core Data
Apple’s API for Persisting Data under Mac OS X




Author: Marcus S. Zarra

http://www.pragprog.com
Nos
vemos
en
WWDC09

Contenu connexe

En vedette

Y Digimos Que Todo Esba Bien
Y Digimos Que Todo Esba BienY Digimos Que Todo Esba Bien
Y Digimos Que Todo Esba BienDIRECTIVO DOCENTE
 
10 la matemática-de-dios
10 la matemática-de-dios10 la matemática-de-dios
10 la matemática-de-diosjauregui88
 
Que es un Rey para ti =)?
Que es un Rey para ti =)?Que es un Rey para ti =)?
Que es un Rey para ti =)?100joaquina100
 
00. Edicion Html. Introduccion 0001
00. Edicion Html. Introduccion   000100. Edicion Html. Introduccion   0001
00. Edicion Html. Introduccion 0001José M. Padilla
 
DiseñO GráFico
DiseñO GráFicoDiseñO GráFico
DiseñO GráFicocecimat
 
Presentación Preliminar - Exámen
Presentación Preliminar - ExámenPresentación Preliminar - Exámen
Presentación Preliminar - ExámenNando Landeta
 
2da Unidad Jaume Trilla
2da Unidad Jaume Trilla2da Unidad Jaume Trilla
2da Unidad Jaume TrillaRosmeri
 
Trabajo De Constitucion Politica
Trabajo De Constitucion PoliticaTrabajo De Constitucion Politica
Trabajo De Constitucion Politicaguest4d63a3
 
Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)
Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)
Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)Fernando Leandro
 
Tarabajo formal de las redes sociales
Tarabajo formal de las redes socialesTarabajo formal de las redes sociales
Tarabajo formal de las redes socialesvjgaby
 
cadena solidaria
cadena solidariacadena solidaria
cadena solidariaanabella92
 
Ojos En La Oscuridad
Ojos En La OscuridadOjos En La Oscuridad
Ojos En La OscuridadJuanma M
 
AnáLisis De La Normativa
AnáLisis De La NormativaAnáLisis De La Normativa
AnáLisis De La NormativaSITRAED
 
Historia Ifeba
Historia IfebaHistoria Ifeba
Historia IfebaIFEBA
 

En vedette (20)

GRUPOE_APLICINFO_12
GRUPOE_APLICINFO_12GRUPOE_APLICINFO_12
GRUPOE_APLICINFO_12
 
Y Digimos Que Todo Esba Bien
Y Digimos Que Todo Esba BienY Digimos Que Todo Esba Bien
Y Digimos Que Todo Esba Bien
 
10 la matemática-de-dios
10 la matemática-de-dios10 la matemática-de-dios
10 la matemática-de-dios
 
Peluqueria Elva
Peluqueria ElvaPeluqueria Elva
Peluqueria Elva
 
Que es un Rey para ti =)?
Que es un Rey para ti =)?Que es un Rey para ti =)?
Que es un Rey para ti =)?
 
00. Edicion Html. Introduccion 0001
00. Edicion Html. Introduccion   000100. Edicion Html. Introduccion   0001
00. Edicion Html. Introduccion 0001
 
DiseñO GráFico
DiseñO GráFicoDiseñO GráFico
DiseñO GráFico
 
AC/DC Homenaje
AC/DC HomenajeAC/DC Homenaje
AC/DC Homenaje
 
Presentación Preliminar - Exámen
Presentación Preliminar - ExámenPresentación Preliminar - Exámen
Presentación Preliminar - Exámen
 
2da Unidad Jaume Trilla
2da Unidad Jaume Trilla2da Unidad Jaume Trilla
2da Unidad Jaume Trilla
 
Trabajo De Constitucion Politica
Trabajo De Constitucion PoliticaTrabajo De Constitucion Politica
Trabajo De Constitucion Politica
 
Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)
Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)
Proyecto Final de Carrera. Portal de Noticias con RSS (Año 2005)
 
Control De Dios
Control De DiosControl De Dios
Control De Dios
 
Teorias
TeoriasTeorias
Teorias
 
Organización Y Liderazgo
Organización Y LiderazgoOrganización Y Liderazgo
Organización Y Liderazgo
 
Tarabajo formal de las redes sociales
Tarabajo formal de las redes socialesTarabajo formal de las redes sociales
Tarabajo formal de las redes sociales
 
cadena solidaria
cadena solidariacadena solidaria
cadena solidaria
 
Ojos En La Oscuridad
Ojos En La OscuridadOjos En La Oscuridad
Ojos En La Oscuridad
 
AnáLisis De La Normativa
AnáLisis De La NormativaAnáLisis De La Normativa
AnáLisis De La Normativa
 
Historia Ifeba
Historia IfebaHistoria Ifeba
Historia Ifeba
 

Similaire à Core Data en Mac OS X

Nativescript
NativescriptNativescript
NativescriptAutentia
 
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva WebAplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva WebGonzalo C.
 
Sp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleSp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleMario Cortés Flores
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en JavaIker Canarias
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de arieslmrv
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Programación móvil para superhéroes
Programación móvil para superhéroesProgramación móvil para superhéroes
Programación móvil para superhéroesSoftware Guru
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
Migración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL DeveloperMigración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL DeveloperValentin Leonard Tabacaru
 
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBVictor Cuervo
 

Similaire à Core Data en Mac OS X (20)

S4-PD1.pptx
S4-PD1.pptxS4-PD1.pptx
S4-PD1.pptx
 
S4 - EF
S4 - EFS4 - EF
S4 - EF
 
Sesion uno azuay
Sesion uno azuaySesion uno azuay
Sesion uno azuay
 
Nativescript
NativescriptNativescript
Nativescript
 
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
 
S8-DAW-2022S1.pptx
S8-DAW-2022S1.pptxS8-DAW-2022S1.pptx
S8-DAW-2022S1.pptx
 
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva WebAplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva Web
 
Sp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleSp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycle
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Programación móvil para superhéroes
Programación móvil para superhéroesProgramación móvil para superhéroes
Programación móvil para superhéroes
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Migración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL DeveloperMigración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL Developer
 
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
Jdbc
JdbcJdbc
Jdbc
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Dernier (10)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Core Data en Mac OS X

  • 1. Usando Core Data el poder de la simplicidad Vicente Vicens Imathink World
  • 2. Core Data es un framework de Cocoa que provee de una infraestructura para la gestión de la colección de objetos y la persistencia
  • 3. Core Data no es una base de datos relacional o un RDBMS
  • 4. • Deshacer y Rehacer • Validación automática de valores de propiedades • Propagación de cambios y consistencia de relaciones entre objetos • Agrupado, filtrado y organización de los datos en memoria y en la UI • Soporte automático para guardar los objetos en repositorios de datos externos • Integración opcional con Cocoa Bindings para dar soporte a la sincronización automática con la UI
  • 5. Mac OS X Sí Tiger Sí Leopard Sí Snow Leopard
  • 6. iPhone OS No 2.x NDA 3.x
  • 7.
  • 8.
  • 9. Cocoa Bindings • Core Data trabaja perfectamente con Cocoa Bindings • Key Value Coding • Key Value Observing • Propiedades
  • 10. Key Value Coding • Nos permite acceder a los atributos de un objeto sin tener que llamar directamente a sus “accessors” Recipe *myRecipe = [[Recipe alloc] init]; NSString *recipeName = [myRecipe valueForKey:@”name”]; [myRecipe setValue:@”Tortilla de patatas” forKey:@”name”];
  • 11. Key Value Observing • Nos permite obtener notificaciones cuando un atributo ha cambiado static NSString *observer = @"Observer" id myRecipe = ... [myRecipe addObserver:self forKeyPath:@"name" options:(NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld) context:observer]; - (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context;
  • 12. Propiedades • Con Leopard y iPhone OS • Son KVC compatibles @interface MyObject: NSObject { NSString *myString; } @property (retain) NSString *myString; @end #import “MyObject.h” @implementation MyObject @synthesize myString; @end
  • 13. Employee Employee Department Department Employee NSManagedObjectContext NSPersistentStoreCoordinator NSManagedObjectModel Persistent Object Store File
  • 14.
  • 15. Subclassing NSManagedObject • Crear “accessors” para atributos y relaciones • Las relaciones To-Many devuelven NSSet • Métodos personalizados @interface Recipe : NSManagedObject { // No se definen los iVars. } @property (assign) NSString *title; @end #import “Recipe.h” @implementation Recipe @dynamic title; @end
  • 16. NSFetchRequest • Se pueden crear en el modelo o en código • NSPredicate y NSSortDescriptor NSManagedObjectContext *myMoc = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityWithName:@"Department" inManagedObjectContext:myMoc]]; NSError *error = nil; NSArray *results = [myMoc executeFetchRequest:request error:&error]; if (error) { [NSApp presentError:error]; return; }
  • 17. Performance Tunning • Normalización versus desnormalización • Cuando guardar - (BOOL)hasChanges; - (BOOL)save:(NSError **)error;
  • 18. Persistent Store Types SQLite Binary XML In-Memory API para crear Atomic Stores personalizados
  • 19. Otros Temas • Versionado y migración • Deshacer y Rehacer • Integración con Spotlight y Quick Look • Sync Services • Multithreading • Aplicaciones distribuidas
  • 20. Apple Documentation • Core Data Programming Guide • Atomic Store Programming Topics • Creating a Managed Object Model with Xcode • XCode Tools for Core Data • Core Data Framework Reference • Tutorials
  • 21. Other Books Core Data Apple’s API for Persisting Data under Mac OS X Author: Marcus S. Zarra http://www.pragprog.com