NSFilemanager загружает новый файл, но UIWebView показывает кэшированную версию

Приложение, которое я создаю, должно периодически проверять известное местоположение на наличие обновленного файла. Это происходит в формате PDF. По истечении времени x приложение должно загрузить новую копию файла. Следующий фрагмент кода работает. Он загружает файл. Но приложение отображает кэшированную версию PDF вместо новой. Я подтвердил это, посмотрев в комплекте приложений. После запуска этого кода в каталоге Documents обязательно появится новый файл. Но в пакете tmp/DiskImageCache-[случайная бессмысленная строка] есть копия старой версии PDF - и это то, что отображается моим UIWebView.

Я искал документы NSFileManager и, конечно же, поднял шторм, но мне не удалось найти способ заставить приложение показывать новую загрузку вместо кэшированной версии PDF.

Большое спасибо за любую помощь, которую вы можете оказать с этой проблемой.

   -(void) checkFile:(NSString *)url andSaveTo:(NSString __autoreleasing *)filename {

    NSFileManager *manager = [NSFileManager defaultManager];
    NSError *error = nil;      
    NSDictionary *attributes = nil;

    if ([manager fileExistsAtPath:filename]) {

       attributes = [manager attributesOfItemAtPath:filename error:nil];

        double updateInterval = [[attributes fileCreationDate] timeIntervalSinceNow];
        cacheInterval = CacheInterval;

        if (ABS(updateInterval) > CacheInterval) {
         [self downloadFile:url andSaveTo:fileName];
        }
    }
}

1 ответ

Решение

Вы всегда можете помешать кешированию, добавив случайное число к вашему URL в качестве параметра

например: address/yourfilehere.pdf?rand=0323094230948203984 и каждый раз присваивать вашему длинному случайному параметру новое случайно сгенерированное число

Другие вопросы по тегам