core data en mac os x

Post on 20-Jun-2015

2.447 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Uso de Core Data en aplicaciones Mac OS X.

TRANSCRIPT

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

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

top related