Ios 对磁盘的网络缓存请求
我目前正在使用下面的代码通过https从Web服务加载数据 我需要一种将这些数据缓存到光盘的方法 理想情况下,流程是这样的 数据加载了吗 如果否-从缓存读取 如果没有internet连接-从缓存读取 如果是-继续正常操作 这怎么可能呢Ios 对磁盘的网络缓存请求,ios,objective-c,caching,afnetworking-2,Ios,Objective C,Caching,Afnetworking 2,我目前正在使用下面的代码通过https从Web服务加载数据 我需要一种将这些数据缓存到光盘的方法 理想情况下,流程是这样的 数据加载了吗 如果否-从缓存读取 如果没有internet连接-从缓存读取 如果是-继续正常操作 这怎么可能呢 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager POST:@"someurl" parameters:parameters suc
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);
}];
要将数据写入文件,可以使用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];
}