Skip to content

Instantly share code, notes, and snippets.

@daniel-rueda
Created December 22, 2011 22:18
Show Gist options
  • Save daniel-rueda/1512096 to your computer and use it in GitHub Desktop.
Save daniel-rueda/1512096 to your computer and use it in GitHub Desktop.
Cambios en DataModel
// Agrega metodo para mapear lo que recibes de la API con atributos de una clase
- (RKManagedObjectMapping *)objectMappingForPublishedID
{
RKManagedObjectMapping *objectMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Publication"];
[objectMapping mapKeyPath:@"account"
toAttribute:@"account"];
[objectMapping mapKeyPath:@"status_id"
toAttribute:@"statusID"];
return objectMapping;
}
/**
Aqui debes agregar una nueva relacion, que es como mapeas lo que recibes en la key 'published_id'
En el modelo de la base de datos (retiOS.xcdatamodeld) debes crear un nuevo 'Entity' que será la clase
que contendra la info que aparece en la key 'published_id' (Checa como está Entity Location en Report)
Luego debes agregar en "Report", en la seccion "Relationships", una nueva relacion, la key que pongas ahi será
la misma que vas a usar abajo (aqui aparece published_id)
Haces lo mismo, pero ahora te vas a la entidad que creaste y creas la relacion inversa
Para crear el archivo .h/.m de la nueva entidad debes:
(Esto lo haces después de crear las entidades y establecer las relaciones)
- Abrir retiOS.xcdatamodeld
- Seleccionar la entidad a la que le quieres crear los archivos
- Seleccionas File -> New -> New File -> Core Data -> NSManagedObject subclass
- Verifica que sea la entidad que seleccionaste
**/
- (RKManagedObjectMapping *)objectMappingForReport
{
RKManagedObjectMapping *reportMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Report"];
NSDateFormatter* dateFormatter = [[NSDateFormatter new] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
dateFormatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale currentLocale] localeIdentifier]] autorelease];
reportMapping.dateFormatters = [NSArray arrayWithObject: dateFormatter];
reportMapping.primaryKeyAttribute = @"identifier";
[reportMapping mapKeyPath:@"id"
toAttribute:@"identifier"];
[reportMapping mapKeyPath:@"markerimg"
toAttribute:@"marker"];
[reportMapping mapAttributes:@"author", @"clean_text", @"comments", @"photo_url", @"text", @"thumb_url", @"type", @"created_at", nil];
// Relationship
[reportMapping mapKeyPath:@"location"
toRelationship:@"location"
withMapping:[self objectMappingForLocation]];
// Debes agregar nueva relacion para "published_id"
// La informacion que se encuentra en la key published_id sera mapeada a una clase
[reportMapping mapKeyPath:@"published_id" // Es el nombre de la key que devuelve la api
toRelationship:@"published_id" // Es el nombre que tienes en el modelado (pueden ser diferentes)
withMapping:[self objectMappingForPublishedID]];
return reportMapping;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment