2012-05-15 6 views
1

Je suis actuellement un débutant au développement iOS et essayer d'obtenir la politique de cache (NSURLRequestReturnCacheDataDontLoad) à tirer du cache pour afficher une page Web tout en étant en ligne sur l'iPhone (en utilisant mode avion). J'utilise actuellement l'API Reachability fournie par Apple pour savoir si la connexion réseau/wifi est opérationnelle ou non. Cela fonctionne très bien, mais quand je vais en mode avion, je ne reçois pas une page Web pour peupler l'UIWebView. Toutes les suggestions seraient très utiles, je regarde en ligne mais je n'ai pas trouvé beaucoup de liens utiles. Merci.Le mode hors connexion ne fonctionne pas lorsque vous utilisez NSURLRequestReturnCacheDataDontLoad

Le code est ci-dessous:

*- (IBAction)refresh:(id)sender 
{ 
    NSURL *url = [NSURL URLWithString:_entry.articleUrl]; 
    NSURLRequest *webRequest = nil; 

    NSString *articleUrl = [_entry.articleUrl substringFromIndex:7]; 

    NSArray *myArray = [articleUrl componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]]; 

    NSString *hostUrl = [myArray objectAtIndex:0]; 

    NSLog(@"%@", hostUrl); 
    Reachability *reachability = [Reachability reachabilityWithHostName:hostUrl]; 

    NetworkStatus netStatus = [reachability currentReachabilityStatus]; 

    [[NSURLCache sharedURLCache] setMemoryCapacity:1024*1024*10]; 

    // Verify current help file cache if we have network connection... 
    if (netStatus == ReachableViaWWAN || netStatus == ReachableViaWiFi) 
    { 
     webRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30]; 
    } 
    else 
    { 
     // Network NOT reachable - show (local) cache if it exists 
     webRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataDontLoad timeoutInterval:30]; 
    } 

    [_webView loadRequest:webRequest]; 
}* 

Répondre

1

Malheureusement, UIWebView ne persiste pas cache de page Web. Je n'ai jamais fait cela, mais en utilisant AFCache devrait fonctionner pour la persistance du cache.

Assurez-vous également que la page mise en cache est en place. Si la page Web n'est pas mise en cache (c'est-à-dire avec Pragma: no-cache), UIWebView peut toujours ne pas le mettre en cache.

Questions connexes