ios - ¿Cómo puedo obtener una imagen en caché almacenada por la categoría UIImageView de AFNetworking?
objective-c caching (1)
Estoy usando la siguiente categoría UIImageView+AFNetworking.h
de AFNetworking
en mi aplicación, está funcionando bien, sus fotos de almacenamiento en caché y carga las imágenes sin problemas.
En un punto, quiero obtener una imagen que ya está allí en mi caché.
Así que busco en la clase de categoría superior donde encontré el siguiente código, que creo - puede ser útil.
Aquí está el fragmento de esto:
@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
Si quieres que agregue una versión web de esto, ya está aquí .
Creo que, - (UIImage *)cachedImageForRequest:(NSURLRequest *)request
es el método que puede devolverme mi imagen en caché.
Pero no estoy seguro, ¿cómo puedo usarlo?
Si conozco Objective-C un poco, ¿es un poco un "protocolo"?
Lo que he intentado hasta ahora es usarlo como un protocolo en uno de mis controladores de vista. Me gusta esto:
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController<AFImageCache>
@end
Pero luego me está dando las siguientes advertencias:
No estoy seguro de cómo resolver esas advertencias y obtener la imagen de la memoria caché? ¿O de alguna otra manera más apropiada?
Supongo que importa el encabezado UIImageView + AFNetworking.h.
Si desea acceder a la imagen en caché. Debería tener un objeto NSURLRequest. Entonces es así:
UIImage *image = [[UIImageView sharedImageCache] cachedImageForRequest:request];
¡Hecho!