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

Foi útil?

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
                                                                        }
                                                                    }];

            });
        }
    }];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top