RestKit Object Mapping relaciones con claves externas

¿Puede RestKit conectar una relación sin almacenar la clave externa como un atributo, es decir, directamente desde la ruta de acceso clave en el JSON?

En particular, tengo una relación Job has_many Rooms. El JSON de la sala no contiene el trabajo, sino que ambos se cargan por separado:

<code>- job: {
    id: 1,
    name: "John"
}

- room: {
    id: 4,
    job_id: 1,
    name: "spare bedroom"
}
</code>

El trabajo se carga antes de la sala.

Mis modelos CoreData, Job tiene propiedades para

<code>@interface Job : NSManagedObject
@property (nonatomic, retain) NSNumber * identifier;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *rooms;
@end

@interface Room : NSManagedObject
@property (nonatomic, retain) NSNumber * identifier;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Job *job;
@end
</code>

Actualmente agrego un@property (nonatomic, strong) NSNumber *jobID; a la habitación, que yo@synthesize.

<code>JobMapping:
    mapping = [RKManagedObjectMapping mappingForClass:[Job class]];
    [mapping setPrimaryKeyAttribute:@"identifier"];

    [mapping mapAttributes:@"name", nil];
    [mapping mapKeyPath:@"id" toAttribute:@"identifier"];

    [mapping mapRelationship:@"rooms" withMapping:[Room objectMapping]];



RoomMapping
    mapping = [RKManagedObjectMapping mappingForClass:[Room class]];
    [mapping setPrimaryKeyAttribute:@"identifier"];

    [mapping mapAttributes:@"name", nil];
    [mapping mapKeyPath:@"id" toAttribute:@"identifier"];
    [mapping mapKeyPath:@"job_id" toAttribute:@"jobID"];

    [mapping mapRelationship:@"job" withMapping:[Job objectMapping]];

    [mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"jobID"];
</code>

Me preguntaba si hay alguna manera de hacerlo sin la propiedad jobID adicional. No quiero tener un atributo ID de trabajo en CoreData xcdatamodeld; es redundante, ya que la relación lo cubre.

Además, si reconstruyo NSManagedObjects, debo volver a agregar la propiedad jobID, que es tediosa. ¿No puedo decirle a restkit que conecte la sala a su trabajo correspondiente a través de la ruta de acceso de job_id en el JSON?

Si elimino la propiedad, lamapKeyPath:@"job_id" línea, y cambiar la última línea a[mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"]; yo obtengo

<code>the entity Room is not key value coding-compliant for the key "job_id".
</code>

Respuestas a la pregunta(1)

Su respuesta a la pregunta