異なるキャッシュタイプSDWebImage.
-
21-12-2019 - |
質問
私のすべての画像をキャッシュしている間はSDWebImageを使用していますが、さまざまな種類の画像をグループ化するために複数のキャッシュを持ちたいです。たとえば、いくつかの画像を持つ3種類のキャッシュなど、実行時にそれらのうちの1つをクリアしたり、setMaxCacheAge
例: 型画像=車の画像は1つのタイプです、オートバイはもう一つです...飛行機はそのように。この画像を保存した後、私はオートバイの画像のみを削除またはクリアしたい(1種類)
今これを持っていますが、キャッシュされたすべての画像のためのものです:
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"];
解決
OK私はどのようにして行くかを把握します...そして私は共有します
最初に[SDWebImageManager sharedManager]
のすべての証拠を削除しました。
その後[SDWebImageDownloader sharedDownloader]
ローカルイメージ(ディスクまたはメモリ)を取得するために新しい1とqueryDiskCacheForKey (SDImageCache)
を要求する(ディスクまたはメモリ)
どのように:
特定のネームスペースを持つ新しいImageCacheを作成する
self.imagecache= [[sdimagecache alloc] initWithNamespace:@ "namespaceImageCachexpto"]。 [_IMAGECACHACHE SETMAXCACHAGE: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
}
}];
});
}
}];
.