API のエラーをマッピングする際に問題が発生しています。次のようなブロックを使用してリクエストをロードしています。
[self.objectManager loadObjectsAtResourcePath:resourcePath usingBlock:^(RKObjectLoader *loader) {
loader.onDidLoadObjects = ^(NSArray *objects) {
// ...
};
loader.onDidFailLoadWithError = ^(NSError *error) {
// ...
};
loader.onDidFailWithError = ^(NSError *error) {
// ...
};
}];
サーバー側では、たとえば、間違ったユーザー名/パスワードでユーザーを認証しようとすると、API が次の形式でエラーを返します。
{ "error":
{"code":"401",
"message":"Wrong username etc. etc."}
}
オブジェクト マッピング ドキュメントで、次のことがわかりました。
RKエラーメッセージ
サーバー側のエラー メッセージを NSError オブジェクトに戻すためのマッピングを提供する単純なクラス [...] RKObjectManager が初期化されると、「エラー」および「エラー」のキーパスから RKErrorMessage のインスタンスへのオブジェクト マッピングがマッピング プロバイダーに登録されます。 . これにより、単純なエラー メッセージのすぐに使えるマッピング サポートが提供されます。[...]
オブジェクトローダーとして解釈すると、自動的に「エラー」または「エラー」keyPathがマップされ、didFailWithError:(またはブロック)が呼び出されます。しかし、これは状況ではありません。エラー応答が API から読み込まれるたびに、このエラーが発生します。
マッピング エラーの追加: keyPath のオブジェクト マッピングが見つかりませんでした: ''
この質問とこの質問から解決策を試しましたが、結果は同じです。
json が API から読み込まれていることはわかっています。デバッガーで追跡しました。また、RKObjectMapping を作成して「エラー」keyPath にマップすると、onDidLoadObjects ブロックがエラー オブジェクトで起動されますが、これは意図したことではありません。
簡単に言えば、私の目標は、API によって「エラー」keyPath が返されるたびに、RestKit が onDidFailWithError ブロックを起動するようにすることです。