电脑硬盘当u盘用 | U盘当硬盘用
961 2023-04-02 23:36:57
最近做项目用到了Alamofire第三方库,Alamofire这个库是大名鼎鼎AFNetworking的swift版本,使用的过程中遇到一些问题,在这里和大家分享一下,如果你遇到和我一样的问题,希望能够帮助到你。废话不多说,开始吧!
我使用Alamofire的时候遇到了两种情况:
情况一: 我用Alamofire获取一个放在云端的json文件的内容,测试的时候发现,就算是断网了,app依然能够获取到json文件的内容。
情况二:我更新了云端的json文件,已经确定通过url能够下载到新的json文件,但是使用app获取到的还是旧版json文件的内容。
综合上面两种情况,可以推算,可能是Alamofire在本地缓存了json文件,像网页机制一样,有缓存就不会再重新请求数据。上网查了一下资料,果不其然!原来Alamofire为了保证访问速度,默认先从缓存获取数据,通过NSURLCache处理缓存阻止不必要的访问,也就是说如果你多次访问的URL都一样的话,它就不会重新请求数据,而是从本地的缓存中获取数据。知道问题所在就好办了,我有两种方法可以避免Alamofire从缓存获取数据。
代码:
// 清理缓存URLCache.shared.removeAllCachedResponses()
代码:
// 忽略本地缓存,重新获取,防止没更新json文件Alamofire.SessionManager.default.session.configuration.requestCachePolicy = .reloadIgnoringLocalCacheData
这两种方法在swift 3.0都可以用,将代码放到获取json文件数据前面就可以了!