(Swift 2.2、Alamofire 3.0)responseJSONに対するAlamofireの応答の具体的なタイプは何ですか?
私はREST呼び出しの多くの後に私が適用するかなり複雑なエラー/状態チェックプロトコルを持っていて、自然にこのコードを再利用したいと思います。
Alamofire.request(.POST, "some/rest/url", params, encoding:.JSON)
.validate()
.responseJSON { response in
// This is what I'd like to do
self.myAwesomeMethod(response)
私の問題は、私は私の結果のswitch文では、定数を使用しようとするものに応じて、myAwesomeMethod
を宣言しています。もちろん
は、ちょうどresponseJSON
クロージャ内で作業し、すべてが互角のドーリーです:
switch response.result {
case .Failure(let error):
handleGracefully(error)
return
case .Success:
// 4. Profit
}
しかし、私はmyAwesomeMethod
にそのスイッチブロックを移動しようとすると、私はいくつかの方法をトリップします。私はresult
の正しい宣言を見つけることができないようで、私のケースでは明示的な列挙型が.Failure
と.Success
であるかどうか分かりません。
私たちは4タプルを渡してきました。私は、ソースを突き刺した後、いくつかの方法で宣言しようとしました。ここに私の最新のものです:
private func myAwesomeMethod(
afResponse: (_,
response: NSHTTPURLResponse?,
result: Result<Value, Error>?,
error: NSError?)) {
switch afResponse.result {
case .Failure(let error):
beGraceful(error)
return
case .Success:
// 4. Profit
}
...
しかし、Result<Value, Error>
でValue
は私、この取得:
宣言されていないタイプの使用 'を値'
しかし.Failure
と.Success
はコンテキストではありません結果の中に定義されているので、他の宣言がそれらにアクセスできないという結果になります。
私は構成部分の開梱を試みましたが、実際には問題は変わりませんでした。私はいつもmyAwesomeMethod
と.responseJSON
コールを使用していますので、ここで私を節約するValue
のために使用できるいくつかのタイプがあることを願っています。
誰にでもアイデアはありますか? @ジョンSchierから右方向へのプッシュに
固定おかげ
ヘルパー関数の宣言はかなりオフになっていました。私が実際に必要としたのは以下の通りでした:
private func myAwesomeMethod(afResponse: Response<AnyValue, NSError>)
その後はすべてがとても幸せそうです。
これはパラメータを渡す問題を最も確実に解決します。ありがとうございます。振り返ってみると、私はそれを見つけ出すべきだったはずだが、これは私の最初のスウィフトロデオである。 '.Failure'と' .Success'列挙定数はまだ表示されません: > Enumの場合 'Failure'型が 'Result?' そこにはどんな考えがありますか? –
Dilapidus
結果タイプを使用している場合は、必ずAlamofireをインポートしてください。 –
私はそれをインポートしています。うーん..私はこのプロジェクトを継承し、ソースを直接引き出します。それがこの問題に関係していないのだろうか。 – Dilapidus