Domanda

Sto usando SDWebImage per un po 'nella cache tutte le mie immagini, ma ora voglio avere più di una cache per raggruppare vari tipi di immagini.Per esempio tre tipi di cache con diverse immagini ciascuna, quindi in runtime voglio cancellare uno o avere diversi setMaxCacheAge

Esempio: Tipi di immagini = Le immagini dell'auto sono un tipo, il motociclo è un altro ... Aeroplani altri .. così.Dopo che archiviamo queste immagini che voglio cancellare o cancellare solo la cache delle immagini del motociclo (un tipo)

Ora ho questo ma è per ogni immagini memorizzate nella cache:

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

...

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

-

L'ho visto ma è davvero che voglio?

.

sdimagecache * imageCache= [[sdimagecache alloc] initwithNameSpace: @ "mynamespace"];

usando la memorizzazione di immagini asincroni in caching in modo indipendente

È stato utile?

Soluzione

ok capisco come fare ... e condividerò

Per prima cosa ho rimosso tutte le prove di [SDWebImageManager sharedManager], perché voglio fare tutto manualmente.

Allora [SDWebImageDownloader sharedDownloader] per richiedere uno nuovo e queryDiskCacheForKey (SDImageCache) per ottenere un'immagine locale (disco o memoria)

Come:

Crea un nuovo imageCache con lo spazio dei nomi specifici

.

self.imagecache= [[sdimagecache alloc] initwithNameSpace: @ "namespaceimagecachexpto"]; [_imagecache setmaxcacheage: onehour * 3];// 3 ore

Verifica se l'immagine (tasto) è già in cache se non lo richiederà nuovamente e salva più tardi

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

            });
        }
    }];
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top