博客>   iOS解压Zip文件--SSZipArchive的使用
  iOS解压Zip文件--SSZipArchive的使用
2019-08-24 13:24 评论:0 阅读:1725 nanawu
ios webview 文件下载 文件解压 加载本地HTML文件

第一步: cocoaPods导入 SSZipArchive 第二步:工程->Build Phases->Link Binary With Libraries 中添加 lib.tbd 库 第三部:先获取要解压的文件,我是需要先从服务器下载文件到本地沙盒,然后解压到本地沙盒,在进行读取显示,我的Zip文件包里 解压出来的是一个HTML文件 下载过程: NSURL url = [NSURL URLWithString:postUrl];//postUrl 为请求服务器的URL NSString path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject; NSString *path1 =[path stringByAppendingPathComponent:@"/Caches"];//获取本地沙盒

   [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {//进行数据请求
    if (!connectionError) {
         NSString *zipPath  = [path1 stringByAppendingPathComponent:fileName];
        NSLog(@"沙河路径%@",path1);
        NSLog(@"^^^^^^^^^^^^^^%@",zipPath);
        if (data) {
            [data writeToFile:zipPath options:0 error:&connectionError];//将请求得到的数据保存到本地

            if (!error1) {
                NSLog(@"*******数据写入成功*****");
                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                    [self copyZipToCaches:^(NSString *path, BOOL succeeded, NSError *error) {//调用SSZipArchive的方法进行压缩文件的解析
                        if (error) {
                            NSLog(@"错误信息啊%@",error);
                        }
                        if (!error) {
                            NSLog(@"copyZipToCache成功啦啦啦");//在这里去刷新webView
                            [[NSNotificationCenter defaultCenter]postNotificationName:@"jiazai" object:nil userInfo:nil];//解析成功之后在这里返回webView加载HTML文件的地方进行刷新WebView

                        }

                    } zipPath:zipPath];
                });                }
        }
               }else{
        NSLog(@"哭丧脸%@",connectionError);
    }
}];

第四步:文件解压完成后进行读取 并显示 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(loadHtml) name:@"jiazai" object:nil];接收通知 实现loadHtml /* 加载静态网页html / -(void)loadHtml{ NSString resourcePath = [zipManger getCaches]; NSString path = [resourcePath stringByAppendingString:@"/www/index.html"];//获取要加载文件的路径

NSString *htmlStr = [[NSString alloc]initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];//改变编码格式

[self.myWebView loadHTMLString:htmlStr baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]bundlePath]]];//webView加载URL

}

-(void)dealloc{ [[NSNotificationCenter defaultCenter]removeObserver:self];//销毁通知 }

收藏
0
sina weixin mail 回到顶部