私はRestKitを使用して、オブジェクトをサーバーに投稿したり、取得したりしています。GETはマッピングでうまく機能します。しかし、POSTはそうではありません。
受信したJSONの形式は次のとおりです。
{"user":{"id":98,"notification":false,"id":98,"token_session":"506934689"}}
問題は、送信されたJSONの投稿オブジェクトが次の形式である場合です。
{"id":98,"notification":false,"id":98,"token_session":"506934689"}
ご覧のとおり、「user」クラス名がありません。(両方のJSON形式で動作するようにservur APIを変更することはできません)
誰かが私を助けることができるなら、これが私のコードです!
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[UserObject class]];
[mapping mapKeyPath:@"id" toAttribute:@"id"];
[mapping mapKeyPath:@"token_session" toAttribute:@"token_session"];
[mapping mapKeyPath:@"notification" toAttribute:@"notification"];
[[RKObjectManager sharedManager].mappingProvider setMapping:mapping forKeyPath:@"user"];
[[RKObjectManager sharedManager].mappingProvider registerMapping:mapping withRootKeyPath:@"user"];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:[mapping inverseMapping] forClass:[UserObject class]];
//Route :
[[RKObjectManager sharedManager].router routeClass:[UserObject class] toResourcePath:@"user"];
そして、オブジェクトの投稿:
RKObjectManager * manager = [RKObjectManager sharedManager];
[manager postObject:user usingBlock:^(RKObjectLoader* loader)
{
loader.delegate = self;
}];
どうもありがとう。
編集 :
私はこれを試しました:
RKObjectManager * manager = [RKObjectManager sharedManager];
[manager postObject:[CurrentSession sharedInstance].user usingBlock:^(RKObjectLoader* loader)
{
loader.sourceObject = [NSDictionary dictionaryWithObject:[CurrentSession sharedInstance].user forKey:@"user"];
loader.resourcePath = url;
loader.delegate = self;
}];
しかし、JSONなので送信は空です:(