【问题标题】:How do I get cached image stored by AFNetworking's UIImageView category?如何获取 AFNetworking 的 UIImageView 类别存储的缓存图像?
【发布时间】:2016-02-08 13:50:11
【问题描述】:

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

在某一时刻,我想获得一张已经在我的缓存中的图像。

所以我深入研究了上面的类别类,在其中发现了以下代码,我认为这可能会有所帮助。

这是它的sn-p:

@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

但是它给了我以下警告:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    完成!

    【讨论】:

    • @Tariq,为什么?这有什么问题?
    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多