使用NSURLRequestReturnCacheDataDontLoad时,脱机模式不起作用

时间:2012-05-15 01:38:11

标签: iphone objective-c ios ios5

我目前是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];
}*

1 个答案:

答案 0 :(得分:1)

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

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