使用Alamofire的API调用不会刷新

时间:2017-08-03 13:24:04

标签: swift alamofire

我第一次调用此API时效果很好。我第二次使用此代码调用API,但似乎没有任何反应。返回的数据完全相同,后端不会注册来自客户端的任何传入API调用。

似乎某种缓存正在发生,我不知道如何关闭它。使用Alamofire 4.5。

这是我的代码:

func getPopularBrocodes(_ offset: Int, completionHandler: @escaping (([AnyObject]?, Int?, AnyObject?) -> Void)) {
    let urlString = Constant.apiUrl().appendingFormat(Constant.apiGetPopularBrocodes).appending("?offset=\(offset)")

    Alamofire.request(urlString, method: .get, encoding: Alamofire.JSONEncoding.default, headers: self.header).validate().responseJSON(completionHandler: {response in
        if response.result.isSuccess {
            if let value = response.value {
                var jsonString = ""
                let json = JSON(value)
                jsonString = json["data"].rawString()!
                let nextInt = Int(json["next"].rawString()!)
                if let brocodes:Array<BroCode> = Mapper<BroCode>().mapArray(JSONString: jsonString) {
                    completionHandler(brocodes, nextInt, nil)
                } else {
                    completionHandler(nil, nextInt, nil)
                }
            }
        }
        if response.result.isFailure{

        }
    })
}

1 个答案:

答案 0 :(得分:1)

是的,本地缓存是问题所在。有多种解决方案。

How to disable caching in Alamofire

您可以通过删除所有缓存的响应来确认它是本地缓存。只需添加: URLCache.shared.removeAllCachedResponses()