Estoy trabajando en mi primera aplicación RestKit, y uso CoreData para el almacenamiento en caché local. En él tengo una relación de muchos a muchos entre el Post < < --- >> Categoría. La relación se llama publicaciones y categorías.RestKit mapeo many-to-many, ¿cómo?
En mi llamada JSON Post Obtengo id's para las categorías como esta: {"post": [...] "categories":[1,4] [...]
, donde 1 y 4 son los ids.
tengo un objeto de modelo personalizado Post
que hereda de NSManagedObject
, en ella tengo una propiedad por categorías, así:
@interface Post : NSManagedObject
[...]
@property (nonatomic, retain) NSSet *categories;
[...]
que hacer lo mismo en un objeto personalizado Categoría de modelo.
Mis asignaciones Actualmente tiene este aspecto:
RKManagedObjectMapping *categoryMapping = [RKManagedObjectMapping mappingForClass:[Category class] inManagedObjectStore:objectManager.objectStore];
categoryMapping.primaryKeyAttribute = @"categoryId";
categoryMapping.rootKeyPath = @"categories";
[categoryMapping mapKeyPath:@"id" toAttribute:@"categoryId"];
[categoryMapping mapKeyPath:@"name" toAttribute:@"name"];
[...]
RKManagedObjectMapping* postMapping = [RKManagedObjectMapping mappingForClass:[Post class] inManagedObjectStore:objectManager.objectStore];
postMapping.primaryKeyAttribute = @"postId";
postMapping.rootKeyPath = @"post";
[postMapping mapKeyPath:@"id" toAttribute:@"postId"];
[...]
[postMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"];
[...]
// Categories many-to-many.
[postMapping mapKeyPath:@"categories" toRelationship:@"categories" withMapping:categoryMapping];
Cuando ejecuto esto me sale el error: '[<__NSCFNumber 0x6c625e0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key id.'
Realmente agradecería si alguien me podría dar alguna pista sobre cómo asignar esta relación.
Gracias, decidió cambiar el JSON a '" categorías ": [{" category_id ": 1}, {" category_id ": 4}]', ¿sabe cómo y cuándo debería completar la tabla de unión? Actualmente solo alcanzo las categorías. ¡Gracias! – Anders
¿Qué es una tabla de unión? Esta es en realidad otra pregunta. –
Sí, gracias. Una tabla de unión es la tabla entre las dos entidades de muchos a muchos, donde se almacenan las claves primarias de las dos tablas. En realidad, rellena esta tabla de unión cuando cargo publicaciones, pero también crea nuevas filas en mi modelo de Categoría por algún motivo. Probablemente haga otra pregunta sobre ese tema. Pero cambiar el JSON pareció ayudar, ya no hay error. ¡Gracias! – Anders