2

は次のerrorMappingように定義されます。

[[[[RKObjectManager sharedManager] mappingProvider] errorMapping] setRootKeyPath:@"error"];

文字列としての単純なエラーメッセージでうまく機能します:

render status: :unprocessable_entity, json: { :error => 'cannot create topic' }

ただし、ハッシュ応答で失敗します:

render status: :unprocessable_entity, json: { :error => @topic.errors }

そして与えます:

W restkit.object_mapping:RKObjectMappingOperation.m:239:-[RKObjectMappingOperation transformValue:atKeyPath:toType:] keyPath '' での値の変換に失敗しました。「JKDictionary」から「NSString」に変換するための戦略はありません

errorMappingハッシュ応答を受け入れる (そしてできれば に保存する)ように RestKit を構成する方法はありますNSDictionaryか?

4

1 に答える 1

2

デフォルトのエラーマッピングを使用していると思いますか? これは、エラー キーパスを RKErrorMessage クラスにマップします。このクラスは NSString を想定していますが、NSDictionary があります (JSONKit で使用しているため JKDictionary ですが、それでも...)。

サーバー コードを変更したくない場合は、iPhone で独自のエラー クラスを作成し、この既定のマッピングを置き換えることができます。例として、デフォルト マップが作成される RKErrorMessage.m と [RKObjectManager init] を確認できます。

于 2012-06-29T07:41:54.657 に答える