Search code examples
jsonswifthttppostalamofire

Alamofire 4, Swift 3: Can not return StatusCode


This gives an error: "Escaping closures can only capture inout ..."

How can I fix it?

func check_info(tag: String, info: String, code: inout Int) {

    Alamofire.request(
        URL + "/api/test_information/",
        method: .post,
        parameters: [tag: info],
        encoding: JSONEncoding.default
    ).responseString { response in
        code = (response.response?.statusCode)!
    }

}

Solution

  • Edited: If you want to return the status code, use this callback function. The callback with return the status code as soon as you get a response.

    func check_info(tag: String, info: String, statusCode: @escaping (String)->Void){
    Alamofire.request(URL + "/api/test_information/", method: .post, parameters: [tag: info], encoding: JSONEncoding.default).responseJSON { response in
                statusCode((response.response?.statusCode)!)
            }
        }
    

    And to call it, use:

    check_info(tag: "yourtag", info: "yourInfo){
        statusCode in
            print(statusCode)
        }