【问题标题】:afnetworking cache request to disc对磁盘的 afnetworking 缓存请求
【发布时间】:2023-04-07 17:54:01
【问题描述】:

我目前正在使用下面的代码从网络服务(通过 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);
}];

【问题讨论】:

    标签: ios objective-c caching afnetworking-2


    【解决方案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];
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-16
      • 2014-07-03
      • 2015-12-02
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2018-02-26
      • 2016-12-25
      • 1970-01-01
      相关资源
      最近更新 更多