Во-первых, не рекомендуется использовать initWithContentsOfURL:encoding:error
для загрузки данных с сетевого ресурса.
Во-вторых, если вы хотите контролировать поведение кэширования, вы должны использовать NSURLRequest
. NSURLRequest
позволяет настроить поведение кэширования запроса, установив cachePolicy
запроса. В вашем случае вы хотите использовать NSURLRequestReloadIgnoringLocalCacheData
. Пример делать это синхронно с использованием NSURLConnection
бы:
NSString *result = nil;
NSData *data = nil;
NSURLResponse *response = nil;
NSURLError *error = nil;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20L];
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (response != nil && [data length] > 0){
result = [NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
Обратите внимание, что это очень наивная реализация, которая не проверяет код состояния HTTP вернулся, мим-типа ответа, или выполнить любую обработку ошибок. Также не рекомендуется проводить синхронную загрузку сетевых ресурсов или сделать это из основного потока. Лучшая реализация будет использовать sendAsynchronousRequest:completion:
или NSURLSession
.
Однако он демонстрирует на высоком уровне то, что вам нужно будет сделать, чтобы ответить на ваш вопрос: NSURLRequest указывает, что этот запрос никогда не должен использовать локальный кеш, а возвращаемые данные используются для создания экземпляра NSString
.
В любом случае вы не должны использовать 'initWithContentsOfURL:' для сетевых операций. Используйте 'NSURLRequest'. –
Если вы используете NSURLRequest, вы можете отключить кеширование, так что ничто никогда не будет кэшироваться. –