Я пытаюсь убедиться, что у меня всегда есть обновленная кэшированная копия UIWebView, используя следующий код:
// Set URL to help file on server
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", HELP_FILE_URL]];
// Check network reachability
wifiReach = [Reachability reachabilityWithHostName:[NSString stringWithFormat:@"%@", SERVER_URL]];
netStatus = [wifiReach currentReachabilityStatus];
// Start activity indicators
[self startAnimation];
// Verify current help file cache if we have network connection...
if (netStatus == ReachableViaWWAN || netStatus == ReachableViaWiFi) {
helpFileRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:30];
} else {
// Network NOT reachable - show (local) cache if it exists
helpFileRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataDontLoad timeoutInterval:30];
}
// Show help file in a web view
[webView loadRequest:helpFileRequest];
В большинстве случаев работает нормально, за исключением случаев перехода в режим полета без остановки приложения. В режиме «В самолете» кэшированный веб-вид прекрасно отображается, НО делегат UIWebView
(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
также вызвано, что я не хочу. Я только хочу, чтобы это срабатывало, если кеш пуст! Как я могу этого достичь? (Если я завершу работу приложения, оно будет работать нормально.) Это небольшая деталь, но мне бы очень хотелось, чтобы она работала правильно:)