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
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;
}
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