我正在使用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"];

独立使用异步图像缓存

有帮助吗?

解决方案

好吧,我想办法。..我会分享

首先,我删除了所有的证据 [SDWebImageManager sharedManager], ,因为我想手动完成所有操作。

然后 [SDWebImageDownloader sharedDownloader] 要求新的和 queryDiskCacheForKey (SDImageCache) 获取本地映像(磁盘或内存)

如何:

创建具有特定命名空间的新imageCache

自我。imageCache=[[SDImageCache alloc]initWithNamespace:@"nameSpaceImageCacheXPTO"];[_imageCache setMaxCacheAge:oneHour*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
                                                                        }
                                                                    }];

            });
        }
    }];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top