недавно я создал пост: NSData caching routineNSData хранится где-то
Но теперь я хочу, чтобы быть более конкретным в том, что я прошу.
Видите ли, у меня есть «карусель», то есть на самом деле вид прокрутки с 7 изображениями. Когда он впервые появляется, он загружает изображения из Интернета и автоматической прокрутки.
Моя проблема заключается в том, что я не хочу, чтобы изображения загружались при каждом прокрутке. К счастью, в фоновом режиме работает некоторая механика «кеша». Таким образом, когда он загружает все изображения, прекращает приложение, а затем запускается без подключения к Интернету, все изображения уже установлены, поэтому он каким-то образом загружает его откуда-то.
Существует код я использую:
NSError *error;
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", WEBSITE, mdl.imageSubUrl]] options:NSDataReadingUncached error:&error];;
NSLog(@"data size0? %lu", (unsigned long)data.length);
И это. Вы можете попробовать самостоятельно, загрузив изображение, затем перезагрузите приложение в режиме полета и проверьте длину байта. Будут данные, даже когда я его ищу, и там сказано, что dataWithContentsOfURL
не делает кеш.
Итак, я хочу просто проверить, есть ли данные, а если нет, не загружайте. Что-то вроде этого:
if (haveData){
self.ivPic.image = [UIImage imageWith:myData];
} else {
NSError *error;
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", WEBSITE, mdl.imageSubUrl]] options:NSDataReadingUncached error:&error];;
NSLog(@"data size0? %lu", (unsigned long)data.length);
}
К сожалению, я не знаю, как сделать такой тест (если есть данные). Во-вторых, я не совсем уверен, как загружать хранимые данные, а не dataWithContentsOfURL, который начнет загрузку с хоста.
Использование SDWebImage. – Wain
Вы можете попробовать UIImageView + AFNetworking.h категорию AFNetworking [ссылка] (http://cocoadocs.org/docsets/AFNetworking/2.0.0/Categories/UIImageView+AFNetworking.html). Это решит вашу цель таким образом, что не нужно обрабатывать кеширование, потому что AFNetworking позаботится об этом. –
Использование 'dataWithContentsOfURL' - плохая идея (это синхронно). Как и другие, сторонние категории «UIImageView» могут выполнять асинхронные запросы, но также упрощают его для вас. Примечание. Кэширование AFNetworking зависит от поведения «NSURLCache», и ваши заголовки (или размер загрузок по отношению к размеру кеша) могут мешать кешированию. Насколько велики файлы изображений и насколько велика ваша «NSURLCache»? – Rob