質問

私のすべての画像をキャッシュしている間は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
                                                                        }
                                                                    }];

            });
        }
    }];
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top