문제

SDWebimagePreeTher를 사용하여 나중에 사용할 수 있도록 내 Plist (약 100, 최대 크기 600KB)에서 이미지 목록을 프리 페치합니다.

포인트는 시뮬레이터에서 이것은 괜찮습니다. 이는 장치에 있지만 일부는 일부만로드하고 캐싱하고 있습니다. 솔직히 왜 얻지 못합니다.

이 문제를 알고 있으면 WiFi 연결을 끄고 이미지가 ImageView (자세한 내용보기)에 올바르게로드 된지 확인하고 놀랍게도 Consoloe가있는 경우에도 프리 페치 된 이미지의 1 \ 5 만 있습니다. 그것이 그들을 모두 프리 페치했다고 말했다.

SDWEBIMAGEPREFETCHER.M에 넣으려고 노력했습니다. startPrefetchingAtIndex:이 코드

- (void)startPrefetchingAtIndex:(NSUInteger)index withManager:(SDWebImageManager *)imageManager
{
    if (index >= [self.prefetchURLs count]) return;
    _requestedCount++;

    [imageManager downloadWithURL:[self.prefetchURLs objectAtIndex:index] delegate:self options:self.options];
    [cache storeImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[self.prefetchURLs objectAtIndex:index]]]] forKey:[self.prefetchURLs objectAtIndex:index] toDisk:YES];

}
.

및 내 ImageView 클래스에서 :

SDImageCache* cache = [SDImageCache sharedImageCache];
    UIImage* cachedImage = [cache imageFromKey:aString fromDisk:YES];

    if (cachedImage) {
        [imageView setImage:cachedImage];
    }
    else{
    [imageView setImageWithURL:[NSURL URLWithString:anUrl]
              placeholderImage:nil options:SDWebImageProgressiveDownload
                       success:^(UIImage *image) { [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }
                       failure:^(NSError *error) {  [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }];

    [imageView addSubview:activityIndicator];
    }
. 콘크리트 결과가없는

. 장치가 아닌 시뮬레이터에서 항상 작동합니다. 여기 뭔가가 누락 되었습니까? SDWebimagePrequether에 몇 가지 캐싱 메서드를 사용하여 디스크에 저장하거나 무엇을 저장해야합니까? 나는 그것이 일하기 위해 노력하고 있지만 매번 실패하는 것을 시도하고 있습니다.

도움이 되었습니까?

해결책

가 문제를 발견 한 것처럼 보입니다.

I 옵션을 캐시 ([prefetcher setOptions:SDWebImageMemoryCacheOnly];)로 설정해서는 안됩니다.하지만 우선 순위가 낮아서 모든 것이 완벽하게 작동합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top