Relações de mapeamento de objetos RestKit com chaves estrangeiras

O RestKit pode conectar um relacionamento sem armazenar a chave estrangeira como um atributo, ou seja, diretamente do caminho-chave no JSON?

Em particular, eu tenho um relacionamento de trabalho has_many Rooms. O JSON da sala não contém o trabalho, em vez disso, ambos são carregados separadamente:

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

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

O trabalho é carregado antes da sala.

Meus modelos CoreData, Job tem propriedades 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>

Atualmente eu adiciono um@property (nonatomic, strong) NSNumber *jobID; para o quarto, que eu@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>

Eu queria saber se há uma maneira de fazer isso sem a propriedade jobID extra? Eu não quero ter um atributo jobID no CoreData xcdatamodeld - é redundante, pois o relacionamento cobre isso.

Além disso, se eu reconstruir os NSManagedObjects, eu preciso adicionar novamente a propriedade jobID, que é entediante. Não posso dizer ao kit de descanso para conectar a sala ao seu trabalho correspondente através do caminho_chave job_id no JSON?

Se eu remover a propriedade,mapKeyPath:@"job_id" linha e mude a última linha para[mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"]; eu recebo

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

questionAnswers(1)

yourAnswerToTheQuestion