对磁盘的 afnetworking 缓存请求
Posted
技术标签:
【中文标题】对磁盘的 afnetworking 缓存请求【英文标题】:afnetworking cache request to disc 【发布时间】:2014-05-01 18:55:20 【问题描述】:我目前正在使用下面的代码从网络服务(通过 https)加载数据。
我需要一种方法将此数据缓存到磁盘。
理想情况下,流程应该是这样的。
数据加载了吗?
如果不是 - 从缓存中读取 如果没有互联网连接 - 从缓存中读取 如果是 - 照常继续这怎么可能?
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"someurl" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
//NSLog(@"Error: %@", error);
];
【问题讨论】:
【参考方案1】:要将数据写入文件,您可以NSJSONSerialization
将您的响应对象转换为NSData
,然后将数据保存到文件中:
NSString* filePath [NSTemporaryDirectory() stringByAppendingPathComponent:@"someFile.json"];
NSData* data = [NSJSONSerialization dataWithJSONObject:responseObject options:NSJSONWritingPrettyPrinted error:nil];
[data writeToFile:filePath options:0 error:nil];
然后,在您发出请求之前,检查文件是否存在并从中读取而不是执行您的请求:
NSData* jsonData = [NSData dataWithContentsOfFile:filePath];
if(jsonData == nil)
// Perform network request
else
id responseObject = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
【讨论】:
以上是关于对磁盘的 afnetworking 缓存请求的主要内容,如果未能解决你的问题,请参考以下文章