所以这就是交易。我最近开始使用 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
}];
我的路径实际上插入了路径变量(抱歉,现在不在正确的计算机上实际复制意大利面文本,但它与上面具有不同路径内容的完全相同)
一切都很好!我已成功下载文件以及所有内容。我当前的问题是我正在尝试让缓存发挥作用,但遇到了很多困难。基本上,我不确定我实际上需要做什么do自 AFNetworking 2.0 起的客户端。我还需要设置 NSURlCache 吗?我是否需要在请求操作上设置不同的缓存类型标头?我想也许这只是entirely内置的,但每次代码运行时我都会收到 200 的状态,即使文件没有任何更改。如果我确实必须使用 NSUrlCache,我是否必须自己手动将电子标签保存在成功块请求操作上,然后将其反馈回来?任何有关如何取得进展的帮助将不胜感激。多谢你们!
AFNetworking 默认使用 NSURLCache 进行缓存。从the FAQ:
AFNetworking 利用了 AFNetworking 已经提供的缓存功能NSURLCache
及其任何子类。只要你的NSURLRequest
对象具有正确的缓存策略,并且您的服务器响应包含有效的Cache-Control
标头,响应将自动缓存以供后续请求使用。
请注意,该机制会缓存NSData
,因此每次从该缓存中检索时,您都需要执行一些昂贵的操作NSData
-to-UIImage
手术。这对于快速显示来说性能不够,例如,如果您在UITableView
or UICollectionView
.
如果是这种情况,请查看UIImageView+AFNetworking,这增加了下载和缓存UIImage
反对UIImageView
。对于某些应用程序,您可以只使用开箱即用的实现,但它是非常基本的。您可能想要查看此类的源代码(不是很长)并将其用作您自己的缓存机制的起点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)