所以这是交易。我最近开始使用AFNetworking在启动时使用以下代码下载一些文件:
NSMutableURLRequest* rq = [api requestWithMethod:@"GET" path:@"YOUR/URL/TO/FILE" parameters:nil];
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:rq] autorelease];
NSString* path=[@"/PATH/TO/APP" stringByAppendingPathComponent: imageNameToDisk];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"SUCCCESSFULL IMG RETRIEVE to %@!",path)
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// Deal with failure
}];
我的路径实际上插入了路径变量(抱歉,现在不在正确的计算机上实际复制粘贴文本,但它与上面完全相同,具有不同的路径内容)
一切都很好!我正在成功下载文件和所有内容。我目前的问题是我正在尝试让缓存工作,但我遇到了很多困难。基本上,我不确定在AFNetworking 2.0中我实际上必须在客户端做什么。我还需要设置 NSURlCache 吗?是否需要以不同的方式设置请求操作的缓存类型标头?我想也许它只是完全内置的,但每次代码运行时我都会收到 200 的状态,即使文件中没有更改。如果我必须使用 NSUrlCache,我是否必须自己手动将电子标签保存在成功块请求操作上,然后将其反馈回去?任何关于如何进步的帮助将不胜感激。谢谢大家!
AFNetworking默认使用NSURLCache进行缓存。 从常见问题解答:
AFNetworking利用了
NSURLCache
及其任何子类已经提供的缓存功能。只要您的NSURLRequest
对象具有正确的缓存策略,并且您的服务器响应包含有效的Cache-Control
标头,响应就会自动缓存以供后续请求使用。
请注意,此机制缓存NSData
,因此每次从此缓存中检索时,都需要执行一些昂贵的NSData
到UIImage
操作。 这对于快速显示的性能不足,例如,如果您要以UITableView
或UICollectionView
显示图像。
如果是这种情况,请查看 UIImageView+AFNetworking
,它将UIImage
对象的下载和缓存添加到UIImageView
。 对于某些应用程序,您可以只使用开箱即用的实现,但它是非常基本的。 您可能希望查看此类的源代码(它不是很长),并将其用作您自己的缓存机制的起点。