如何获取 AFNetworking 的 UIImageView 类别存储的缓存图像?
How do I get cached image stored by AFNetworking's UIImageView category?
我在我的应用程序中使用 AFNetworking
中的以下类别 UIImageView+AFNetworking.h
,它工作正常,它为我缓存照片并顺利加载图像。
有一次,我想获取缓存中已有的图像。
所以我深入研究了上面的类别 class,在那里我找到了以下代码,我认为这可能会有所帮助。
这是它的片段:
@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
是可以 return 我的缓存图像的方法。
但是我不确定,我该如何使用它?
如果我知道 Objective-C 一点,那就有点像 "protocol"?
到目前为止我尝试的是在我的一个视图控制器中像协议一样使用它。像这样:
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController<AFImageCache>
@end
但是它给了我以下警告:
我不确定如何解决这些警告并从缓存中获取图像?或者其他更合适的方式?
我假设你导入 UIImageView+AFNetworking.h header.
如果你想访问缓存的图片。你应该有一个 NSURLRequest object。然后是这样的:
UIImage *image = [[UIImageView sharedImageCache] cachedImageForRequest:request];
完成!
我在我的应用程序中使用 AFNetworking
中的以下类别 UIImageView+AFNetworking.h
,它工作正常,它为我缓存照片并顺利加载图像。
有一次,我想获取缓存中已有的图像。
所以我深入研究了上面的类别 class,在那里我找到了以下代码,我认为这可能会有所帮助。
这是它的片段:
@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
是可以 return 我的缓存图像的方法。
但是我不确定,我该如何使用它?
如果我知道 Objective-C 一点,那就有点像 "protocol"?
到目前为止我尝试的是在我的一个视图控制器中像协议一样使用它。像这样:
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController<AFImageCache>
@end
但是它给了我以下警告:
我不确定如何解决这些警告并从缓存中获取图像?或者其他更合适的方式?
我假设你导入 UIImageView+AFNetworking.h header.
如果你想访问缓存的图片。你应该有一个 NSURLRequest object。然后是这样的:
UIImage *image = [[UIImageView sharedImageCache] cachedImageForRequest:request];
完成!