私はこの問題に長い間取り組んでいますが、私のニーズに合った解決策を見つけることができませんでした.
問題は、構造全体をロードせずにデータをロードして関係にマップするにはどうすればよいかということです
簡単な例:
私たちはいくつかの鳥を手に入れました:
{
"birds":[{
"bird":{"id":"1","value":"LaLeLu"},
"bird":{"id":"2","value":"LeLeLa"},
...
}]
}
これは、次のようにマッピングできます。
RKManagedObjectMapping *birdMapping = [RKManagedObjectMapping
mappingForClass:[Bird class]];
menuMapping.primaryKeyAttribute = @"identifier";
[menuMapping mapKeyPath:@"value" toAttribute:@"value"];
[menuMapping mapKeyPath:@"id" toAttribute:@"identifier"];
[[[RKObjectManager sharedManager] mappingProvider]
setMappingForKeyPath:"birds.bird"];
今ではうまく機能します。
これで、すべての鳥に多くのコメントを付けることができますが、最初のリクエストでこれらすべてのコメントをロードしたくありません。
ユーザーが特定の鳥をクリックすると、コメントが読み込まれます。
だから私は要求します:
NSString *resourcePath = [NSString stringWithFormat:@"/birds/%@/
comments", myBird.id]
[[RKObjectManager sharedManager]
loadObjectsAtResourcePath:resourcePath];
RestKit のニーズに合うという応答を変更できますが、ニーズは何ですか?
{
"comments":[{
"comment"{"id":"1","value":"Comment1","bird_id":"1"}
}]
}
そして今、この応答をマッピングする方法がわかりません。
鳥に関係なくコメントをマッピングすることは問題ありません。
RKManagedObjectMapping *commentMapping = [RKManagedObjectMapping
mappingForClass:[Comment class]];
menuMapping.primaryKeyAttribute = @"identifier";
[menuMapping mapKeyPath:@"value" toAttribute:@"value"];
[menuMapping mapKeyPath:@"id" toAttribute:@"identifier"];
[[[RKObjectManager sharedManager] mappingProvider]
setMappingForKeyPath:"comments.comment"];
誰かが私の問題を理解し、助けてくれることを願っています