RestKit Object Mapping отношения с внешними ключами
Может ли RestKit соединить отношения, не сохраняя внешний ключ в качестве атрибута, то есть непосредственно из пути к ключу в JSON?
В частности, у меня есть отношения Job has_many Rooms. JSON комнаты не содержит задания, скорее, оба загружаются отдельно:
<code>- job: { id: 1, name: "John" } - room: { id: 4, job_id: 1, name: "spare bedroom" } </code>
Работа загружается до комнаты.
Мои модели CoreData, Job имеет свойства для
<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>
В настоящее время я добавляю@property (nonatomic, strong) NSNumber *jobID;
в комнату, которую я@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>
I was wondering if there's a way I can do this without the extra jobID property? Я не хочу иметь атрибут jobID в CoreData xcdatamodeld - он является избыточным, поскольку взаимосвязь покрывает это.
Также, если я перестраиваю NSManagedObjects, мне нужно повторно добавить свойство jobID, что утомительно. Могу ли я сказать restkit подключить комнату к соответствующему заданию через путь к файлу job_id в JSON?
Если я удалю собственность, тоmapKeyPath:@"job_id"
и измените последнюю строку на[mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"];
я получил
<code>the entity Room is not key value coding-compliant for the key "job_id". </code>