Различные типы кеша SDWebImage

Я некоторое время использую SDWebImage для кэширования всех своих изображений, но теперь я хочу иметь более одного кеша для группировки различных типов изображений. Например, три типа кешей с несколькими изображениями в каждом, поэтому во время выполнения я хочу очистить один из них или иметь разные setMaxCacheAge

Пример: типы изображений = изображения автомобилей относятся к одному типу, мотоциклы — к другому... самолеты — к другому... вот так. После того, как я сохраню эти изображения, я хочу удалить или очистить кеш только изображений мотоциклов (один тип)

Теперь у меня есть это, но для каждого кэшированного изображения:

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

...

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

-

Я видел это, но действительно ли это то, что я хочу?

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

Независимое использование асинхронного кэширования изображений


person silvaric    schedule 03.06.2014    source источник


Ответы (1)


Хорошо, я разберусь, как это сделать... и я поделюсь

Сначала я удалил все доказательства [SDWebImageManager sharedManager], потому что хочу сделать все вручную.

Затем [SDWebImageDownloader sharedDownloader] запросить новый и queryDiskCacheForKey (SDImageCache) получить локальный образ (диск или память)

Как:

Создайте новый imageCache с определенным пространством имен

self.imageCache = [[SDImageCache alloc] initWithNamespace:@"nameSpaceImageCacheXPTO"]; [_imageCache setMaxCacheAge: один час * 3]; // 3 часа

Проверьте, не находится ли изображение (ключ) в кеше, если нет, запросите новое и сохраните позже.

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

            });
        }
    }];
person silvaric    schedule 09.06.2014