2011-06-28 12 views
8

Rails 3.0.8では、jsonにモデル名のルート要素が含まれています。たとえば、私のロケーションモデルです。Rails 3.1によるRestKitマッピング

[ 
{ 
location: { 
city: San Diego 
name: Mission Valley YMCA Krause Family Skatepark 
pads_required: 0 
country: United States 

そして、マッピングプロバイダはロケーションオブジェクトを直接調べました。あなたはレール3.1.0ルート・ノード「場所」にアップグレードするとき

RKObjectMapping* locationMapping = [RKObjectMapping mappingForClass:[RKLocation class]]; 
[locationMapping mapKeyPath:@"id" toAttribute:@"locationId"]; 
... 
[objectManager.mappingProvider setMapping:locationMapping forKeyPath:@"location"]; 

は今デフォルトで削除され、私はそれなしでマッピングプロバイダを設定するかどうかはわかりませんか?私は何もしなかったし、代わりの方法を探したが、成功しなかった。

これはどのようにマップするのですか?助けてください!

RestKit側から
[ 
{ 
    city: San Diego 
    name: Mission Valley YMCA Krause Family Skatepark 
    pads_required: 0 
    country: United States 

答えて

7

、私は知りませんが、あなたがやってバックRestKitが期待するものにJSONを取得することができますようthis topicからそれが見えます:

class Location < ActiveRecord::Base 
    self.include_root_in_json = true 
end 

編集:完全性については 、ここにあなたがRestKitでそれを行うだろう方法は次のとおりです。

RKObjectMapping* locationMapping = [RKObjectMapping mappingForClass:[RKLocation class]]; 
[locationMapping mapKeyPath:@"id" toAttribute:@"locationId"]; 
... 
[objectManager.mappingProvider addObjectMapping:locationMapping]; 

をし、後でマッパーを呼び出す:

RKObjectMapping* locationMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[RKLocation class]]; 
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/locations" objectMapping:locationMapping delegate:self]; 

次に、RKObjectLoaderデリゲートメソッドのオブジェクトを処理します。

4

はRestKitでは、このようにルート・モデル名を含むようにマッピングを登録することができます。

[objectManager.mappingProvider registerMapping:locationMapping withRootKeyPath:@"location"]; 
0

短いと甘い答えを:forKeyPath:@""は動作します。