Swift3 完成处理程序中的快速返回Alamofire错误

Swift3 完成处理程序中的快速返回Alamofire错误,swift3,alamofire,Swift3,Alamofire,我正在尝试为我的应用程序编写API管理器,并希望将任何响应错误返回给调用函数。我应该在这里测试错误并将其作为完成处理程序中的第三个变量返回,还是可以从HTTPURLResponse中获取它?有没有更好的办法 我有以下代码 func myQuery(router: myRouter, completionHandler: @escaping (HTTPURLResponse?, [String: Any]?) -> ()) { Alamofire.request(router)

我正在尝试为我的应用程序编写API管理器,并希望将任何响应错误返回给调用函数。我应该在这里测试错误并将其作为完成处理程序中的第三个变量返回,还是可以从HTTPURLResponse中获取它?有没有更好的办法

我有以下代码

func myQuery(router: myRouter, completionHandler: @escaping (HTTPURLResponse?, [String: Any]?) -> ()) {

    Alamofire.request(router)
        .responseJSON { response in

            if response.result.error != nil {

            }  
            else {              

// ... save auth token 

completionHandler(response.response, response.result.value as? [String: Any])
    }
如果处理此问题的最佳方法是同时返回错误,那么此代码是否正确

func myQuery(router: myRouter, completionHandler: @escaping (String?, HTTPURLResponse?, [String: Any]?) -> ()) {

    Alamofire.request(router)
        .responseJSON { response in

            if response.result.error != nil {
                completionHandler(response.result.error as? String, response.response, response.result.value as? [String: Any])
            }
            else {

            completionHandler(nil, response.response, response.result.value as? [String: Any])
    }
为了添加更多的上下文,我尝试在调用函数时替换类似于此代码的内容

Alamofire.request((url),
   method: .get,
   parameters: nil,
   encoding: URLEncoding.default,
   headers: ["Authorization" : requestHeader, "APi-Key" : token])
            .responseJSON { response -> Void in

            if response.result.error != nil {
                // Handle Error
                completionHandler(nil, response.result.error as NSError?)
            }

我将返回
response
(请求返回的参数)并处理完成处理程序中的所有内容。顺便说一下,
as!字符串?
是一个矛盾的术语,我不知道怎么做。请你举个例子作为回答好吗?这方面我是新手。我不熟悉
Alamofire
,但不熟悉
(String?、HTTPURLResponse?、[String:Any]?
返回
响应的–很可能是非可选–类型
并调用
完成处理程序(response)
我似乎无法从响应中提取错误。编译器想要
as?String!
我将其更改为
as?String