Alamofire Completion Handler 返回响应+数据

Alamofire Completion Handler returning response + data

我有一个函数在其完成处理程序中包含一个 responseObject。目前这个 return 是我调用它时的 json 主体,以及任何错误。

我正在使用的 API 的某些部分,但是,不要 return 响应正文中的任何数据,它们只是 return 响应(200、404 等。 ..)

我正在考虑将响应附加到正在 returned 的空 json 对象中,然后意识到这很愚蠢,如果我 return 可能会更好编辑了 NSHTTPURLResponse,但我发现的所有内容都解释了如何 return responseObject 以及错误...

这是 return 完成处理程序的函数:

func makePostRequest(url : String, params : AnyObject, completionHandler: (responseObject:  NSHTTPURLResponse, JSON?, error: NSError?) -> ())  -> Request? {


    println("params = \(params)")
    return Alamofire.request(.POST, url, parameters: params as? [String : AnyObject], encoding: .JSON)


        .responseJSON { (request, response, data, error) in completionHandler(
            //This is wrong
            response: response as? NSHTTPURLResponse,
            responseObject:
            {
                println("Request is \(request)")

                println("Response is \(response)")

                println("Data is \(data)")

                println("Error is \(error)")

                //Append the response to this JSON object?
                //
                var json:JSON = [:]


                if let anError = error
                {

                    println(error)
                }
                else if let data: AnyObject = data
                {

                    json = JSON(data)

                }


                //probably better to return the two...
                //
                return (response, json)

                }(),
            error: error

            )
    }
}

这是它的用法:

networking.makePostRequest(documentUrl, params: docParams) { response, json, error  in


           println("response is: \(response)")

        println("document json: \(json)")

         println("document error: \(error)")



    }

我已将 'response' 位添加到所有代码位中,我确定这可能吗?只是不确定如何实现它..

对于一直想弄清楚如何 return 这样的人,我是这样解决的:

 func makePostRequest(url : String, params : AnyObject, completionHandler: (httpResponse: NSHTTPURLResponse, responseObject:JSON?, error: NSError?) -> ())  -> Request? {


    println("params = \(params)")
    return Alamofire.request(.POST, url, parameters: params as? [String : AnyObject], encoding: .JSON)


        .responseJSON { (request, response, data, error) in completionHandler(
            //This is wrong
            httpResponse: response!,
            responseObject:
            {
                println("Request is \(request)")

                println("Response is \(response)")

                println("Data is \(data)")

                println("Error is \(error)")

                //Append the response to this JSON object?
                //
                var json:JSON = [:]


                if let anError = error
                {

                    println(error)
                }
                else if let data: AnyObject = data
                {

                    json = JSON(data)

                }
                 return json
            }(),
            error: error

            )
    }
}

然后这样调用它:

 networking.makePostRequest(workDocumentUrl, params: params) { response, json, error  in

        if response.statusCode == 200{
       //do something

        }

        println("json: \(json)")
        println("error: \(error)")



    }