ios - AFNetworking 2.0 且仅在离线时使用缓存

标签 ios caching offline afnetworking-2

当用户使用我的应用程序并且他们失去连接或使用飞行模式时,我遇到了问题。

我的应用服务器端没有设置任何缓存策略,暂时我无法更改它。我从 AFNetworking 1.x 迁移到 2.0,现在我在发出请求时使用 AFHTTPRequestOperationManager。问题是因为我在服务器端没有缓存策略,所以每个请求都是向服务器发出的(目前还可以)但是如果用户无法连接到我的服务器,它不会加载缓存的请求.

所以,我正在尝试以下操作,直接像这样使用 AFHTTPRequestOperation:

NSURL *URL = [NSURL URLWithString:filePath];
NSMutableURLRequest *request = [[NSURLRequest requestWithURL:URL] mutableCopy];
if (![[AFNetworkReachabilityManager sharedManager] isReachable]) {
    [request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
}
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

}];
[[NSOperationQueue mainQueue] addOperation:op];

这样,如果 AFNetworkReachabilityManager 告诉我没有连接,我会为请求配置缓存策略并从缓存中正确加载它。

问题是,这是处理这种情况的正确方法吗?

最佳答案

您只需要继承 AFHTTPSessionManager 并检查客户端是否离线。然后您可以更改缓存策略或强制应用使用缓存数据。

关于ios - AFNetworking 2.0 且仅在离线时使用缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173839/

相关文章:

ios - 当我将UIImage设置为带有URL的NSData时,加载需要一段时间。

objective-c - 如何转义 NSString 以在 NSURL 中使用?

python - 如何解决从 LRU 缓存打印值并在一段时间后删除值时遇到的问题?

java - 聚集 HashMap

Android离线文档不同于在线文档

ios - 在 Storyboard 中设置时,UISearchBar 不显示范围栏

objective-c - View 中 View 的网格或平铺算法

ios - AlamofireImage:如何清除所有图像缓存?

events - 跟踪用户不在网站时发生的 Google Analytics 事件

html - Safari HTML5 离线问题