Я использую SDWebImagePrefetcher для предварительной выборки списка изображений из моего plist (около 100, максимальный размер 600 КБ), чтобы сохранить их (возможно, на диске) для последующего использования.
Дело в том, что на симуляторе это работает нормально, а на устройстве загружаются и кэшируются только некоторые из них, и я, честно говоря, не понимаю, почему.
Я знаю это, потому что после их предварительной загрузки я отключаю соединение Wi-Fi и смотрю, правильно ли изображения загружены в imageView (в detailView), и, что удивительно, предварительно загружено только 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];
}
Без конкретных результатов. Всегда работаю на симуляторе, а не на устройстве. Я что-то упустил здесь? Должен ли я использовать какой-либо метод кэширования в SDWebImagePrefetcher для хранения их на диске или как? Я пытаюсь заставить его работать, но каждый раз терплю неудачу.
NSLog(@"%@, error. localizedDescription");
Что-нибудь? - person brynbodayle   schedule 05.10.2012