Pregunta

Estoy usando SDWebImage por un tiempo de almacenamiento en caché de todas mis imágenes, pero ahora quiero tener más de una caché para agrupar distintos tipos de imágenes.Por ejemplo, tres tipos de cachés con varias imágenes, cada una, por lo que en tiempo de ejecución quiero borrar uno de ellos o tienen diferentes setMaxCacheAge

Ejemplo:tipos de imágenes = coche imágenes es un tipo de motocicleta es otra...los aviones de otros..como esto.Después de que me guarde esta imágenes que desea eliminar o borrar la caché de sólo de la motocicleta de las imágenes (un tipo)

Ahora tengo este pero es para todas las imágenes en caché:

SDImageCache * sDImageCache = [SDImageCache sharedImageCache];
[sDImageCache setMaxCacheAge:60*60*24];

...

SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];
[imageCache cleanDisk];

-

Yo vi esto, pero es realmente lo que quiero?

SDImageCache *imageCache = [[SDImageCache alloc] initWithNamespace:@"myNamespace"];

Utilizando Asincrónica Imagen De Almacenamiento En Caché De Forma Independiente

¿Fue útil?

Solución

Ok yo averiguar cómo hacerlo...y la voy a compartir

Primero he quitado todas las evidencias de [SDWebImageManager sharedManager], porque quiero hacer todo manualmente.

Entonces [SDWebImageDownloader sharedDownloader] para solicitar uno nuevo y queryDiskCacheForKey (SDImageCache) para obtener la imagen local (disco o memoria)

Cómo:

Crear nuevos imageCache con el espacio de nombres específico

auto.imageCache = [[SDImageCache alloc] initWithNamespace:@"nameSpaceImageCacheXPTO"];[_imageCache setMaxCacheAge:oneHour * 3];// 3 horas

Compruebe si la imagen (clave) ya está en caché si no va a solicitud de uno nuevo y guardar más 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top