我在 Alamofire 中将缓存策略设置为请求时忽略本地缓存。
然后我加载了一个带有网络连接的视图控制器,然后断开了网络连接,关闭了应用程序并再次运行。
现在不会显示没有网络可用的错误(即 Alamofire 不会创建 nserror 对象),而是以似乎成功从缓存获取数据的方式运行应用程序。奇怪的是,当我尝试使用
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
}
}
}
我想做的是仅在没有网络连接时从缓存中加载数据,类似于有限的离线模式。如何实现?
Alamofire.request(mutableURLRequest).validate().responseJSON{ response in...}
。 - Fábio Salata