De cache diferentes tipos de SDWebImage
-
21-12-2019 - |
Pergunta
Eu estou usando SDWebImage por um tempo o cache de todas as minhas imagens, mas agora eu quero ter mais do que um cache para agrupar vários tipos de imagens.Por exemplo, três tipos de caches com várias imagens de cada, assim em tempo de execução eu gostaria de esclarecer um deles ou ter diferentes setMaxCacheAge
Exemplo:tipos de imagens = carro de imagens é um tipo de motocicleta é outro...aviões outros..como este.Depois que eu armazenar essas imagens que eu quero excluir ou limpar a cache apenas de moto imagens (um tipo)
Agora eu tenho isso, mas é para todas as imagens armazenadas em cache:
SDImageCache * sDImageCache = [SDImageCache sharedImageCache];
[sDImageCache setMaxCacheAge:60*60*24];
...
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];
[imageCache cleanDisk];
-
Eu vi isso, mas é realmente o que eu quero?
SDImageCache *imageCache = [[SDImageCache alloc] initWithNamespace:@"myNamespace"];
Usando Assíncrona Imagem De Colocação Em Cache De Forma Independente
Solução
Ok eu descobrir como fazer...e vou compartilhar
Primeiro tirei todas as evidências de [SDWebImageManager sharedManager]
, porque eu quero fazer tudo manualmente.
Em seguida, [SDWebImageDownloader sharedDownloader]
para solicitar uma nova e queryDiskCacheForKey (SDImageCache)
local (imagem do disco ou memória)
Como:
Criar novos imageCache com namespace específico
auto.imageCache = [[SDImageCache alloc] initWithNamespace:@"nameSpaceImageCacheXPTO"];[_imageCache setMaxCacheAge:hora * 3];// 3 horas
Verifique se a imagem (chave) já está em cache, se não vai solicitação de novo e guardar mais tarde
/////////
// * Prepar Key
/////////
NSString * key = url.absoluteString;
/////////
// * Get Local Image
/////////
[_imageCache queryDiskCacheForKey:key done:^(UIImage *image, SDImageCacheType cacheType) {
if (image) {
completedBlock(image,nil); // return block
}else{
/////////
// * Request Image
/////////
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:url
options:SDWebImageProgressiveDownload
progress:^(NSInteger receivedSize, NSInteger expectedSize) {}
completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
if (finished && image){
/////////
// * Save Image
/////////
[_imageCacheProgram storeImage:image
recalculateFromImage:NO
imageData:data
forKey:key
toDisk:YES];
completedBlock(image,error); // return block
}
}];
});
}
}];