Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AF2.0上的缓存_Ios_Iphone_Objective C_Cocoa Touch_Afnetworking - Fatal编程技术网

Ios AF2.0上的缓存

Ios AF2.0上的缓存,ios,iphone,objective-c,cocoa-touch,afnetworking,Ios,Iphone,Objective C,Cocoa Touch,Afnetworking,这就是交易。我最近开始使用AFNetworking在start上下载一些文件,使用以下代码: NSMutableURLRequest* rq = [api requestWithMethod:@"GET" path:@"YOUR/URL/TO/FILE" parameters:nil]; AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:rq] autorelease]

这就是交易。我最近开始使用AFNetworking在start上下载一些文件,使用以下代码:

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
-to-
UIImage
操作。这对于快速显示来说性能不够,例如,如果您在
UITableView
UICollectionView
中显示图像


如果是这种情况,请查看,它将
UIImage
对象的下载和缓存添加到
UIImageView
。对于某些应用程序,您可以只使用开箱即用的实现,但这是非常基本的。您可能希望查看该类的源代码(不太长),并将其用作自己缓存机制的起点。

AFNetworking默认使用NSURLCache进行缓存。发件人:

AFNetworking利用了
NSURLCache
及其任何子类已经提供的缓存功能。只要您的
NSURLRequest
对象具有正确的缓存策略,并且您的服务器响应包含有效的
cache Control
头,响应将自动缓存以供后续请求使用

请注意,此机制缓存
NSData
,因此每次从该缓存中检索时,您都需要执行一个稍微昂贵的
NSData
-to-
UIImage
操作。这对于快速显示来说性能不够,例如,如果您在
UITableView
UICollectionView
中显示图像


如果是这种情况,请查看,它将
UIImage
对象的下载和缓存添加到
UIImageView
。对于某些应用程序,您可以只使用开箱即用的实现,但这是非常基本的。您可能想看看这个类的源代码(它不是很长)并将其作为您自己的缓存机制的起点。

默认url请求的缓存策略应该可以正常工作--您确定服务器允许缓存吗?尝试显式设置请求操作的缓存策略。如果我正确理解你们的意思,那么它应该使用我上面输入的0额外缓存,是吗?显然,我应该在success blocks操作中得到304是吗?@AlexSullivan我认为缓存的对象在success block中返回,所以你不会看到304,你会看到缓存的原始请求返回的200。304在HTTP世界中被认为是“成功”的,但是我在失败块中得到了一个304。默认url请求的缓存策略应该可以正常工作--你确定服务器允许缓存吗?尝试显式设置请求操作的缓存策略。如果我正确理解你们,它应该缓存我上面输入的0,是吗?显然,我应该在success blocks操作中得到304是吗?@AlexSullivan我认为缓存的对象在success block中返回,所以你不会看到304,你会看到缓存的原始请求返回的200。304在HTTP世界中被认为是“成功”的,但我在故障块中得到了一个304。另外:SDWebImage是一个更强大的图像下载、缓存和显示库,但它没有与AFNetworking集成:另外:SDWebImage是一个更强大的图像下载、缓存和显示库,但它没有与AFNetworking集成: