Отношения RestKit Object Mapping с внешними ключами

Может ли RestKit связать отношение без сохранения внешнего ключа в качестве атрибута, т. е. непосредственно из пути к ключу в JSON?

В частности, у меня есть работа _со многими комнатами. JSON комнаты не содержит задания, оба загружаются отдельно:

- job: {
    id: 1,
    name: "John"
}

- room: {
    id: 4,
    job_id: 1,
    name: "spare bedroom"
}

Задание загружается перед помещением.

Мои модели CoreData, Job имеет свойства для

@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

В настоящее время я добавляю @property (nonatomic, strong) NSNumber *jobID;в комнату, которую я @synthesize.

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"];

Мне интересно, есть ли способ сделать это без дополнительного свойства jobID? Я не хочу иметь атрибут jobID в CoreData xcdatamodeld, -это избыточно, так как связь покрывает это.

Кроме того, если я перестраиваю NSManagedObjects, мне нужно повторно -добавить свойство jobID, что утомительно.Могу ли я сказать ресткиту подключить комнату к соответствующему заданию через путь _id идентификатора в JSON?

Если я удалю свойство, строку mapKeyPath:@"job_id"и изменю последнюю строку на [mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"];, я получу

the entity Room is not key value coding-compliant for the key "job_id".
12
задан Zeophlite 29 April 2012 в 07:48
поделиться