2012-04-04 4 views
0

私はこの問題で長時間取り組んでいますが、私のニーズに合った解決策 が見つかりませんでした。リモートデータのレイトロード(RestKitとCoreData)

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

希望誰かが私の問題を理解し、その溶液に興味ウェアすべての人のために

答えて

0

を助けることができる:

RestKit 0.10.0問題を修正してください:

RKManagedObjectMapping *commentMapping = [RKManagedObjectMapping 
mappingForClass:[Comment class]]; 
commentMapping.primaryKeyAttribute = @"identifier"; 
[commentMapping mapKeyPath:@"value" toAttribute:@"value"]; 
[commentMapping mapKeyPath:@"id" toAttribute:@"identifier"]; 

// Here starts the relevant part: 

[commentMapping mapKeyPath:@"bird_id" to Attribute:@"bird_id"]; 
[commentMapping mapRelationship:@"bird" withMapping:birdMapping]; 
[commentMapping connectRelationship:@"bird" withObjectPropertyForPrimaryKeyAttribute:"bird_id"] 



[[[RKObjectManager sharedManager] mappingProvider] 
    setMapping:commentMapping ForKeyPath:"comments.comment"]; 
関連する問題