Upload
blogintosh
View
2.452
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Uso de Core Data en aplicaciones Mac OS X.
Citation preview
Usando Core Datael poder de la simplicidad
Vicente VicensImathink 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 XMac OS X
Tiger
Leopard
Snow Leopard
Sí
Sí
Sí
iPhone OSiPhone OS
2.x
3.x
No
NDA
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 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;
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
NSManagedObjectContext
EmployeeEmployeeEmployeeDepartmentDepartment
NSManagedObjectModelNSPersistentStoreCoordinator
FilePersistent Object Store
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
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
Performance Tunning
- (BOOL)hasChanges;
- (BOOL)save:(NSError **)error;
• Normalización versus desnormalización
• Cuando guardar
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 DataApple’s API for Persisting Data under Mac OS X
Author: Marcus S. Zarra
http://www.pragprog.com
Nos vemos en WWDC09