最近遇到一个令人头疼的问题,如下所述:当有网络时请求网络数据,得到一个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.frame = CGRectMake(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
没看懂你的代码~~~
把具体问题描述出来吧。
设置断点看看24小时之后加载的到底是什么东西。
换了一种方案,不再纠结那个问题了,可能是系统本身对webView缓存的时间是有限的,webview应该是可以加载出来的,只是webView的内容就是一张图片,而那张图片却只是一个url,是需要有网络的情况下加载的吧,反正现在还不清楚,之后继续研究下看看。。。谢谢各位的回答,我就选第一个给分啦