Swift在完成处理程序中返回Alamofire错误

时间:2017-02-27 17:58:54

标签: swift3 alamofire

我正在尝试为我的应用编写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?)
            }

0 个答案:

没有答案