首页 新闻 会员 周边 捐助

webView加载本地文件的问题

0
悬赏园豆:100 [已解决问题] 解决于 2015-05-05 08:51

最近遇到一个令人头疼的问题,如下所述:当有网络时请求网络数据,得到一个html,我将它存储到文件中,然后本地加载这个文件,无网络状况下依然可以加载,可是当时间过去一段时间(24小时后),只能在有网络下加载现存的html,无网络下加载不出这个文件,很是奇怪,令人不解,希望大牛给予指点。下面是代码:

 

/* 加载网络 */

-(void)loadNetWork

{

    //获取设备信息

    //    struct utsname systemInfo;

    //    uname(&systemInfo);

    //    NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];

    //    NSLog(@"%@",deviceString);

    

    NSNumber *num = ScreenHeight > 480 ? @2 : @1;

    

    //form:  1:android  2:ios

    //type android: 1代表1.78 2代表1.67 iOS:1代表640*960 2代表640*1136

    

    NSDictionary *dict = @{@"from":@2,@"type":num};

    

    //上传设备信息,返回相应的HTML,加载webView

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    manager.requestSerializer = [AFHTTPRequestSerializer serializer];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    [manager GET:DOMAINNAME(launchUrl) parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSData *data = responseObject;

 

        

    NSString *dataString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"dataString:%@",dataString);

    /* 写入本地文件 */

    [self saveWithData:dataString];

        

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"error:%@",error);

        

    }];

    

}

 /* 存取webView Html文件 */

-(void)saveWithData:(id)jsonData

{

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

    NSString *path=[paths objectAtIndex:0];

    NSString *Json_path=[path stringByAppendingPathComponent:@"launchFile.html"];

        /* 写入文件 */

    NSString *string = [NSStringstringWithFormat:@"%@",jsonData];

 

    NSLog(@"%@",[string writeToFile:Json_path atomically:YESencoding:NSUTF8StringEncodingerror:nil] ? @"Succeed":@"Failed");

   

    //    NSLog(@"文件路径:%@",Json_path);

}

 

-(UIWebView *)webView

{

    if (!_webView) {

        _webView = [[UIWebViewalloc]init];

        _webView.frameCGRectMake(0, 0, ScreenWidth, ScreenHeight -105);

        _webView.scrollView.bounces = NO;

        _webView.delegate = self;

        _webView.backgroundColor = [UIColorclearColor];

        _webView.opaque = NO;

 

        /* 加载本地html文件 */

        NSArray *paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

        NSString *path=[paths objectAtIndex:0];

        NSString *Json_path=[path stringByAppendingPathComponent:@"launchFile.html"];

        NSURL *url = [NSURLfileURLWithPath:Json_path];

        NSLog(@"path:%@ \n url:%@",Json_path,url);

        

        NSURLRequest *request = [NSURLRequestrequestWithURL:url];

        [_webViewloadRequest:request];

        

        /* 调试 */

        [selfreadData];

 

        [self.viewaddSubview:_webView];

    }

    return_webView;

    

}

/* 该方法纯属为了调试 */

#if 1

-(void)readData

{

    //    ==Json文件路径

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

    NSString *path=[paths objectAtIndex:0];

    NSString *Json_path=[path stringByAppendingPathComponent:@"launchFile.html"];

    //    ==Json数据

    NSFileManager *manager = [NSFileManagerdefaultManager];

    if (![manager fileExistsAtPath:Json_path])  return ;

    

        NSFileHandle *handle = [NSFileHandlefileHandleForReadingAtPath:Json_path];

        NSData *data = [handle readDataToEndOfFile];

        NSString *string = [[NSStringalloc]initWithData:data encoding:NSUTF8StringEncoding];

 

    NSLog(@"path:%@ \n string:%@",Json_path,string);

    

}

#endif

安池2014的主页 安池2014 | 初学一级 | 园豆:114
提问于:2015-05-04 10:01
< >
分享
最佳答案
0

没看懂你的代码~~~

把具体问题描述出来吧。

收获园豆:100
519740105 | 大侠五级 |园豆:5810 | 2015-05-04 13:24
其他回答(2)
0

设置断点看看24小时之后加载的到底是什么东西。

Firen | 园豆:5385 (大侠五级) | 2015-05-04 18:35
0

换了一种方案,不再纠结那个问题了,可能是系统本身对webView缓存的时间是有限的,webview应该是可以加载出来的,只是webView的内容就是一张图片,而那张图片却只是一个url,是需要有网络的情况下加载的吧,反正现在还不清楚,之后继续研究下看看。。。谢谢各位的回答,我就选第一个给分啦

安池2014 | 园豆:114 (初学一级) | 2015-05-05 08:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册