【问题标题】:Alamofire 4, Swift 3: Can not return StatusCodeAlamofire 4、Swift 3:无法返回 StatusCode
【发布时间】:2017-02-15 15:02:13
【问题描述】:

这会报错:“转义闭包只能捕获 inout ...”

我该如何解决?

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)!
    }

}

【问题讨论】:

    标签: json swift http post alamofire


    【解决方案1】:

    已编辑:如果要返回状态码,请使用此回调函数。收到响应后,回调会立即返回状态码。

    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)!)
            }
        }
    

    要调用它,请使用:

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

    【讨论】:

    • 感谢您的回答!但是我需要在另一个函数中使用这个值
    • @MarkYankovsky 现在检查,使用这个回调函数应该可以工作。自己没测试过,但我就是这样用的
    • 谢谢,但是我怎么称呼这个函数呢?我从未使用过@escaping?
    • @MarkYankovsky 抱歉,我完全忘记了那部分。刚刚编辑了我的答案。您可以使用一种完成块来捕获转义值。当 Alamofire 请求完成时,将调用该完成块。
    猜你喜欢
    • 2015-08-04
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2017-08-31
    相关资源
    最近更新 更多