RestKitは外部キーを属性として(つまりJSONのキーパスから直接)格納せずにリレーションシップを接続できますか?RestKitオブジェクト外部キーとの関係
特に、私は仕事has_manyルーム関係を持っています。部屋のJSONにはジョブが含まれず、別々にロードされます。
- job: {
id: 1,
name: "John"
}
- room: {
id: 4,
job_id: 1,
name: "spare bedroom"
}
ジョブはルームの前にロードされます。
私のCoreDataのモデルは、仕事は現在、私は部屋に@property (nonatomic, strong) NSNumber *jobID;
、I @synthesize
を追加
@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
のプロパティを持っています。
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"];
私は余分なジョブIDプロパティせずにこれを行うことができる方法があるのかと思いまして?私はCoreData xcdatamodeldにjobID属性を持たせたくありません。それは関係がそれをカバーするので、冗長です。
また、NSManagedObjectsを再構築する場合は、退屈なjobIDプロパティを再追加する必要があります。 JSONのjob_idキーパスを使ってルームをその対応するジョブに接続するようにRestkitに指示することはできませんか?
私は、mapKeyPath:@"job_id"
ラインをプロパティを削除し、[mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"];
に最後の行を変更した場合、私は私がのJobIdコアデータの一過性の値にすると、カスタムセットを書いて、それのためになるだろう
the entity Room is not key value coding-compliant for the key "job_id".
本当の関係の隣に冗長なIDプロパティを持たずに、コアデータの関係を正しく接続する方法を知りましたか? – thejaz