iOS zip文件解压缩代码问题

时间:2016-01-28 05:35:40

标签: ios objective-c zip unzip

我想解压缩从web下载的zip文件,但我的问题是zip文件没有在if-else语句中解压缩。

如果它引导我,那是不是错了。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
NSURL *url = [NSURL URLWithString:@"http://www.icodeblog.com/wp-content/uploads/2012/08/zipfile.zip"];
NSError *error = nil;
// 2
NSData *data = [NSData dataWithContentsOfURL:url options:0 error:&error];
if(!error)
{
    // 3
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [paths objectAtIndex:0];
    NSString *zipPath = [path stringByAppendingPathComponent:@"zipfile.zip"];

        [data writeToFile:zipPath options:0 error:&error];

       if(!error)
       {
            // TODO: Unzip
            ZipArchive *za = [[ZipArchive alloc] init];
            // 1
           if ([za UnzipOpenFile: zipPath]) {
                // 2
                BOOL ret = [za UnzipFileTo: path overWrite: YES];
                if (NO == ret){} [za UnzipCloseFile];

                // 3
                NSString *imageFilePath = [path stringByAppendingPathComponent:@"photo.png"];
                NSString *textFilePath = [path stringByAppendingPathComponent:@"text.txt"];
                NSData *imageData = [NSData dataWithContentsOfFile:imageFilePath options:0 error:nil];
                UIImage *img = [UIImage imageWithData:imageData];
                NSString *textString = [NSString stringWithContentsOfFile:textFilePath
                                                                 encoding:NSASCIIStringEncoding error:nil];

                // 4           
                dispatch_async(dispatch_get_main_queue(),^{
                    self.imageView.image = img;
                    self.label.text = textString;
                });
}
else
{
            NSLog(@"Error saving file %@",error);
        }
   }
    else
  {
        NSLog(@"Error downloading zip file: %@", error);
    }
    }
});

1 个答案:

答案 0 :(得分:0)

根据您的代码调试

1)NSData * data = [NSData dataWithContentsOfURL:url options:0 error:& error];

数据为“无”

通过在下面的代码行中添加plist

<key>NSAppTransportSecurity</key>  
<dict>  
  <key>NSAllowsArbitraryLoads</key><true/>  
</dict>

您将获得预期的输出