Tengo una clase Person (atributos de firstName y lastName) y otra entidad Worker (atributos de salario y título). En mi modelo de Datos básicos, la entidad Persona se configura como el padre de la entidad Trabajador. En mi configuración AppDelegate que mi asignación ...Asignación de entidad de RestKit y Asignación de entidad principal
RKManagedObjectMapping* personMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Person" inManagedObjectStore:objectManager.objectStore];
[personMapping mapKeyPath:@"firstName" toAttribute:@"firstName"];
[personMapping mapKeyPath:@"lastName" toAttribute:@"lastName"];
[objectManager.mappingProvider addObjectMapping:personMapping];
RKManagedObjectMapping* workerMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Worker" inManagedObjectStore:objectManager.objectStore];
[workerMapping mapKeyPath:@"wage" toAttribute:@"wage"];
[workerMapping mapKeyPath:@"title" toAttribute:@"title"];
[objectManager.mappingProvider setMapping:workerMapping forKeyPath:@"workers"];
RKManagedObjectSeeder* seeder = [RKManagedObjectSeeder objectSeederWithObjectManager:objectManager];
[seeder seedObjectsFromFiles:@"people.json", nil];
... en people.json ...
{
"workers":
[
{
"firstName":"Rob",
"lastName":"Johnson"
},
{
"firstName":"John",
"lastName":"Roberts"
}
]
}
... ahora cuando ejecuta este no haya objetos son cabeza de serie. ¿Cómo expreso el hecho de que la clase Trabajadora tiene los mismos mapeos que Person? Podría simplemente agregarlos a ese mapeo, pero eso parece estar mal.
también al registrar las asignaciones persona que utiliza ...
[objectManager.mappingProvider addObjectMapping:personMapping];
... Yo no uso el método RKManagedObjectMapping setMapping: forKeyPath: porque nunca vamos a experimentar sólo una persona en esta solicitud y por lo nunca lo estaremos mapeando. Pero aún quiero que se registre. para las entidades secundarias de la persona.
¿Puedes probar esto: [[RKObjectManager sharedManager] .mappingProvider setObjectMapping: personMapping forKeyPath: @ "workers"]? Soy nuevo en el kit de reparación, pero por lo que yo entiendo, debe incluir de alguna manera a los "trabajadores" en su keypath y pensar que esto hará esto. ¿Por qué se llama trabajo pero no devuelve salario y título? – Pfitz
¡Gracias, lo intentaré! Para su pregunta, estaba lanzando esto rápidamente y aún no había agregado esos valores. – rob5408
quizás también pueda experimentar esto: [personMapping mapKeyPath: @ "workers.firstName" toAttribute: @ "firstName"]; – Pfitz