afnetworking缓存请求到光盘

时间:2014-05-01 18:55:20

标签: ios objective-c caching afnetworking-2

我目前正在使用以下代码从网络服务(通过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 个答案:

答案 0 :(得分:0)

要将数据写入文件,您可以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];
}