Question

J'utilise SDWebImage depuis un certain temps pour mettre en cache toutes mes images, mais maintenant je souhaite disposer de plusieurs caches pour regrouper différents types d'images.Par exemple, trois types de caches avec plusieurs images chacun, donc au moment de l'exécution, je souhaite en effacer un ou en avoir différents setMaxCacheAge

Exemple:types d'images = les images de voitures sont un type, les motos en sont un autre...avions autres..comme ça.Après avoir stocké ces images, je souhaite supprimer ou vider le cache uniquement des images de moto (un type)

Maintenant, j'ai ceci mais c'est pour chaque image mise en cache :

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

...

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

-

J'ai vu ça mais est-ce vraiment ce que je veux ?

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

Utilisation indépendante de la mise en cache d'images asynchrones

Était-ce utile?

La solution

Ok, j'ai trouvé comment faire... et je partagerai

J'ai d'abord supprimé toutes les preuves de [SDWebImageManager sharedManager], parce que je veux tout faire manuellement.

Alors [SDWebImageDownloader sharedDownloader] pour en demander un nouveau et queryDiskCacheForKey (SDImageCache) pour obtenir une image locale (disque ou mémoire)

Comment:

Créer une nouvelle imageCache avec un espace de noms spécifique

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

Vérifiez si l'image (clé) est déjà dans le cache, sinon vous en demanderez une nouvelle et l'enregistrerez plus tard.

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

            });
        }
    }];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top