Alamofire 4、Swift 3:无法返回 StatusCode

Posted

技术标签:

【中文标题】Alamofire 4、Swift 3:无法返回 StatusCode【英文标题】:Alamofire 4, Swift 3: Can not return 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)!
    


【问题讨论】:

【参考方案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 请求完成时,将调用该完成块。

以上是关于Alamofire 4、Swift 3:无法返回 StatusCode的主要内容,如果未能解决你的问题,请参考以下文章

Json 解析 Swift 3 Alamofire

如何在 Swift 3 中使用 Alamofire 4 解析这个 json?

无法在 Alamofire 中禁用缓存(Xcode 9 - swift 4)

Swift 3 / Alamofire:无法用数据加载表格

Swift 3 / Alamofire:我无法获取 UITableView 上的数据

Alamofire超时无法在Swift 3中运行