gpt4 book ai didi

ios - 即使缓存策略设置为 ReloadIgnoringLocalAndRemoteCacheData,Alamofire 也会从缓存中加载

转载 作者:IT王子 更新时间:2023-10-29 05:23:16 25 4
gpt4 key购买 nike

我在 Alamofire 中将缓存策略设置为请求以忽略本地缓存。

然后我加载一个带有网络连接的 View Controller ,然后我断开网络连接,终止应用程序并再次运行它。

现在没有显示没有网络可用错误(即 alamofire 没有创建 nserror 对象)创建,相 react 用程序运行就像请求成功从缓存中获取数据一样明显。奇怪的是当我尝试使用检查缓存数据时

NSURLCache.sharedURLCache().cachedResponseForRequest(request)

即使数据来自缓存,也返回 nil ..

我可以阻止缓存响应的唯一方法是执行 NSURLCache.sharedURLCache().removeAllCachedResponses()

    let request = NSURLRequest(URL: NSURL(string: url)!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 100)

Alamofire.manager.request(method, request, parameters:params)
.responseJSON { (request, response, data, error) in
if let anError = error {
if anError.code == NSURLErrorNotConnectedToInternet {
UIAlertView(title: "Alert", message: "No Network Connection Available", delegate: nil, cancelButtonTitle: "ok").show()
}

} else if let data: AnyObject = data {
println(NSURLCache.sharedURLCache().cachedResponseForRequest(request))
//prints nil

}

}
}

我想做的是只有在网络连接不可用时才从缓存中加载数据,比如有限的离线模式。如何做到这一点?

最佳答案

我在一个项目中使用这种方式并且它正在工作:

let mutableURLRequest = NSMutableURLRequest(URL: SERVICEURL)
mutableURLRequest.HTTPMethod = "POST"

mutableURLRequest.HTTPBody = self.createJson()
mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
mutableURLRequest.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData

request(mutableURLRequest).validate().responseJSON{ response in...

希望对您有所帮助。

关于ios - 即使缓存策略设置为 ReloadIgnoringLocalAndRemoteCacheData,Alamofire 也会从缓存中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30728934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com