Relacje mapowania obiektów RestKit z kluczami obcymi

Czy RestKit może połączyć relację bez przechowywania klucza obcego jako atrybutu, tj. Bezpośrednio z ścieżki w JSON?

W szczególności mam pracę związaną z wieloma pokojami. JSON pokoju nie zawiera zadania, a oba są ładowane oddzielnie:

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

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

Zadanie jest ładowane przed pokojem.

Moje modele CoreData, Job ma właściwości

<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>

Obecnie dodaję@property (nonatomic, strong) NSNumber *jobID; do pokoju, który ja@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>

Zastanawiałem się, czy jest jakiś sposób, w jaki mogę to zrobić bez dodatkowej własności JobID? Nie chcę mieć atrybutu jobID w CoreData xcdatamodeld - jest to zbędne, ponieważ relacja to obejmuje.

Również jeśli odbuduję obiekty NSManagedObject, muszę ponownie dodać właściwość jobID, co jest nużące. Nie mogę powiedzieć, aby restkit połączył pokój z odpowiadającym mu zadaniem za pomocą keypath job_id w JSON?

Jeśli usunę nieruchomość,mapKeyPath:@"job_id" i zmień ostatnią linię na[mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"]; dostaję

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

questionAnswers(1)

yourAnswerToTheQuestion