문제

내가 사용하여 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