Frage

Ich verwende SDWebImage für eine Weile zum Zwischenspeichern aller meiner Bilder, aber jetzt möchte ich mehr als einen Cache haben, um verschiedene Arten von Bildern zu gruppieren.Zum Beispiel drei Arten von Caches mit jeweils mehreren Bildern, also möchte ich zur Laufzeit einen davon löschen oder einen anderen haben setMaxCacheAge

Beispiel:typen bilder = Autobilder sind ein Typ, Motorrad ist ein anderer...flugzeuge andere..so.Nachdem ich diese Bilder gespeichert habe, möchte ich nur den Cache der Motorradbilder löschen oder löschen (ein Typ)

Jetzt habe ich das aber ist für jedes Bild zwischengespeichert:

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

...

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

-

Ich habe das gesehen, aber ist das wirklich das, was ich will?

SDImageCache *imageCache = [[SDImageCache-Zuweisung] initWithNamespace:@"Mein Namensraum"];

Asynchrones Image-Caching unabhängig verwenden

War es hilfreich?

Lösung

Ok, ich finde heraus, wie es geht...und ich werde teilen

Zuerst entfernte ich alle Beweise von [SDWebImageManager sharedManager], weil ich alles manuell machen will.

Dann [SDWebImageDownloader sharedDownloader] um eine neue anzufordern und queryDiskCacheForKey (SDImageCache) so erhalten Sie ein lokales Image (Festplatte oder Speicher)

Wie:

Erstellen Sie einen neuen Bildcache mit einem bestimmten Namespace

selbst.imageCache = [[SDImageCache-Zuweisung] initWithNamespace:@"nameSpaceImageCacheXPTO"];[_imageCache setMaxCacheAge:Eine Stunde * 3];// 3 stunden

Überprüfen Sie, ob sich das Bild (Schlüssel) bereits im Cache befindet, andernfalls wird ein neues angefordert und später gespeichert

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

            });
        }
    }];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top