1

私はRestKitを初めて使用するので、この質問はばかげているかもしれません。[objectManager sendObject:...]を使用する場合、結果にどのマッピングを使用するかをRestKitに指示するにはどうすればよいですか。具体的には、GETデータとPOSTデータをサーバーに送信します。サーバーは、JSONでエンコードされたメッセージで応答します。

{"purchaseresult":{"status":"ok","errormsg":""}}

私が使用するObjective-Cコードは次のようになります。

RKObjectMapping *purchaseResultMapping = [RKObjectMapping mappingForClass:[PurchaseResult class]];
[purchaseResultMapping mapKeyPathsToAttributes:@"status", @"status", @"errormsg", @"errorMessage",nil];
[objectManager.mappingProvider setMapping:purchaseResultMapping forKeyPath:@"purchaseresult"];
[[RKObjectManager sharedManager].mappingProvider setErrorMapping:purchaseResultMapping];

[objectManager sendObject:queryParams toResourcePath:@"/purchase/post" usingBlock:^(RKObjectLoader* loader) {
    loader.method = RKRequestMethodPOST;
    loader.resourcePath = @"/purchase/post";
    loader.params = queryParams;
    loader.objectMapping = purchaseResultMapping;
}];

これにより、RestKitエラーが返されます。

restkit.network:RKObjectLoader.m:216マッピング中に発生したエラー:タイプ「__NSDictionaryI」のクラスのオブジェクトマッピングが必要でした。プロバイダーは「PurchaseResult」に対してオブジェクトマッピングを返しました。

私がここで間違っていることについて何か考えはありますか?

ありがとうクリスチャン

4

1 に答える 1

1

送信しているオブジェクトは NSDictionary であるため、RestKit は NSDictionary のオブジェクト マッピングを探していますが、PurchaseResult マッピングを提供しています。PurchaseResult のインスタンスを送信するか、NSDictionary クラスのマッピングを提供する場合、このエラーは回避する必要があります。

これに代わる方法は次のとおりです。

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/purchase/post" usingBlock:^(RKObjectLoader *loader) {
  loader.delegate = **Your loader delegate here**;
  loader.method = RKRequestMethodPOST;
  loader.params = queryParams;
}];

戻ってくるオブジェクトのマッピングを定義していることを確認してください。

于 2012-11-23T16:05:49.813 に答える