RestKit 0.10.1を使用して、次のjson形式と同様のオブジェクトを提供しています。
{"objects": [
{"owner": 1,
"_id": 823,
"data": {
"diam": 5.0,
"plant_date": "10/02/2008"}
},
... ] }
クライアント側では、サブオブジェクトやリレーションシップは必要ないので、オブジェクトの属性にフラット化します。
[myMapping mapKeyPathsToAttibutes:
@"_id", @"id",
@"owner", @"owner",
@"data.diam", @"diam", //here is what I mean by flatten; notice data.diam -> diam
@"data.plant_date", @"plant_date", nil];
このデータの読み取りに問題はありませんが、シリアル化する場合は、最上位の属性のみがサーバーに送信されます。シリアル化すると、サーバーは次のようになります。
{"_id":0,"owner":1}
上記のinverseMappingを使用してシリアル化マッピングを正しく(私は思う)登録したことに注意してください。
[objectManager.mappingProvider setSerializationMapping:[myMapping inverseMapping] forClass:[MyClass class]];
私がそのようにオブジェクトを投稿するとき:
myObject = [MyClass object];
myObject.diam = [NSNumber numberWithInt:5];
myObject.plant_date = myDate;
[[RKObjectManager sharedManager] postObject:myObject delegate:self];
完全な、平坦化されていない構造が必要です。
{"_id":0,"owner":1, "data": {"diam": 5.0, "plant_date": "10/02/2008"} }
RestKitを使用して、登録済みオブジェクトをサーバーにマッピングするキーパス(つまり、「data.diam」)を投稿するにはどうすればよいですか?