如何获取AFNetworking的UIImageView类别存储的缓存图像?

时间:2015-11-07 13:35:27

标签: ios objective-c caching uiimageview afnetworking-2

我在我的应用中使用了来自UIImageView+AFNetworking.h的以下类别AFNetworking,工作正常,为我提供缓存照片并顺利加载图片。

有一次,我想获得一张已存在于缓存中的图像。

所以我深入到上面的类别类别,我发现下面的代码,我认为 - 可能会有所帮助。

以下是它的摘录:

@implementation AFImageCache

- (UIImage *)cachedImageForRequest:(NSURLRequest *)request {
    switch ([request cachePolicy]) {
        case NSURLRequestReloadIgnoringCacheData:
        case NSURLRequestReloadIgnoringLocalAndRemoteCacheData:
            return nil;
        default:
            break;
    }

    return [self objectForKey:AFImageCacheKeyFromURLRequest(request)];
}

- (void)cacheImage:(UIImage *)image
        forRequest:(NSURLRequest *)request
{
    if (image && request) {
        [self setObject:image forKey:AFImageCacheKeyFromURLRequest(request)];
    }
}

@end

如果您希望我添加此版本的网络版,则已经here

我认为,- (UIImage *)cachedImageForRequest:(NSURLRequest *)request是可以返回我缓存图像的方法。

但我不确定,我该如何使用它?

如果我稍微了解一下Objective-C,它就是一个"协议"?

到目前为止,我所尝试的是在我的一个视图控制器中使用它作为协议。像这样:

#import <UIKit/UIKit.h>

@interface MyViewController : UIViewController<AFImageCache>

@end

但是它给了我以下警告:

enter image description here

我不确定如何解决这些警告并从缓存中获取图像?还是其他更合适的方式?

1 个答案:

答案 0 :(得分:1)

我假设您导入了UIImageView + AFNetworking.h标头。

如果要访问缓存的图像。你应该有一个NSURLRequest对象。然后是这样的:

UIImage *image = [[UIImageView sharedImageCache] cachedImageForRequest:request];

完成!

相关问题