1

我目前是 iOS 开发的新手,并试图获取缓存策略(NSURLRequestReturnCacheDataDontLoad)以从缓存中提取以查看网页,同时在 iPhone 上离线(使用飞行模式)。我目前正在使用 Apple 提供的 Reachability API 来确定网络/wifi 连接是否已启动并正在运行。这很好,但是当我进入飞行模式时,我没有得到一个网页来填充 UIWebView。任何建议都会非常有帮助,我在网上环顾四周,但没有找到太多有用的链接。谢谢。

代码如下:

*- (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];
}*
4

1 回答 1

1

不幸的是,UIWebView不会持久化网页缓存。我从来没有这样做过,但是使用AFCache应该可以用于缓存持久化。

还要确保缓存页面到位。如果网页不可缓存(即使用 Pragma: no-cache),UIWebView可能仍然无法缓存它。

于 2012-05-15T02:42:40.547 回答