22
Usando Core Data el poder de la simplicidad Vicente Vicens Imathink World

Core Data en Mac OS X

Embed Size (px)

DESCRIPTION

Uso de Core Data en aplicaciones Mac OS X.

Citation preview

Page 1: Core Data en Mac OS X

Usando Core Datael poder de la simplicidad

Vicente VicensImathink World

Page 2: Core Data en Mac OS X

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

Page 3: Core Data en Mac OS X

Core Data no es una base de datos relacional o un

RDBMS

Page 4: Core Data en Mac OS X

• 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

Page 5: Core Data en Mac OS X

Mac OS XMac OS X

Tiger

Leopard

Snow Leopard

Page 6: Core Data en Mac OS X

iPhone OSiPhone OS

2.x

3.x

No

NDA

Page 7: Core Data en Mac OS X
Page 8: Core Data en Mac OS X
Page 9: Core Data en Mac OS X

Cocoa Bindings•Core Data trabaja perfectamente

con Cocoa Bindings

•Key Value Coding

•Key Value Observing

•Propiedades

Page 10: Core Data en Mac OS X

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”];

Page 11: Core Data en Mac OS X

Key Value Observing•Nos permite obtener notificaciones

cuando un atributo ha cambiadostatic NSString *observer = @"Observer"id myRecipe = ...[myRecipe addObserver:self

forKeyPath:@"name"options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld)context:observer];

- (void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionary*)changecontext:(void*)context;

Page 12: Core Data en Mac OS X

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

Page 13: Core Data en Mac OS X

NSManagedObjectContext

EmployeeEmployeeEmployeeDepartmentDepartment

NSManagedObjectModelNSPersistentStoreCoordinator

FilePersistent Object Store

Page 14: Core Data en Mac OS X
Page 15: Core Data en Mac OS X

Subclassing NSManagedObject

@interface Recipe : NSManagedObject {// No se definen los iVars.

}@property (assign) NSString *title;@end

#import “Recipe.h”@implementation Recipe@dynamic title;@end

• Crear “accessors” para atributos y relaciones

• Las relaciones To-Many devuelven NSSet

• Métodos personalizados

Page 16: Core Data en Mac OS X

NSFetchRequest

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;

}

• Se pueden crear en el modelo o en código

• NSPredicate y NSSortDescriptor

Page 17: Core Data en Mac OS X

Performance Tunning

- (BOOL)hasChanges;

- (BOOL)save:(NSError **)error;

• Normalización versus desnormalización

• Cuando guardar

Page 18: Core Data en Mac OS X

Persistent Store Types

SQLite

Binary

XML

In-Memory

API para crear Atomic Stores personalizados

Page 19: Core Data en Mac OS X

Otros Temas

• Versionado y migración

• Deshacer y Rehacer

• Integración con Spotlight y Quick Look

• Sync Services

• Multithreading

• Aplicaciones distribuidas

Page 20: Core Data en Mac OS X

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

Page 21: Core Data en Mac OS X

Other Books

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

Author: Marcus S. Zarra

http://www.pragprog.com

Page 22: Core Data en Mac OS X

Nos vemos en WWDC09