RestKit Object Mapping-Beziehungen zu Fremdschlüsseln

Kann RestKit eine Beziehung verbinden, ohne den Fremdschlüssel als Attribut zu speichern, d. H. Direkt über den Schlüsselpfad in JSON?

Insbesondere habe ich eine Beziehung zu Job has_many Rooms. Der JSON des Raums enthält den Job nicht, sondern beide werden separat geladen:

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

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

Der Job wird vor dem Raum geladen.

Meine CoreData-Modelle, Job hat Eigenschaften für

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

Zur Zeit füge ich ein@property (nonatomic, strong) NSNumber *jobID; zu Raum, den ich@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>

Ich habe mich gefragt, ob es eine Möglichkeit gibt, dies ohne die zusätzliche jobID-Eigenschaft zu tun. Ich möchte kein jobID-Attribut im CoreData xcdatamodeld haben - es ist redundant, da die Beziehung dies abdeckt.

Auch wenn ich die NSManagedObjects neu erstelle, muss ich die jobID -Eigenschaft neu hinzufügen, was mühsam ist. Kann ich restkit nicht anweisen, den Raum über den job_id-Schlüsselpfad in JSON mit dem entsprechenden Job zu verbinden?

Wenn ich das Grundstück entferne, wird dasmapKeyPath:@"job_id" Zeile, und ändern Sie die letzte Zeile in[mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"]; Ich bekomme

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage