2016-01-28 3 views
1

Я хочу разархивировать zip-файл, загруженный из Интернета, но моя проблема в том, что zip-файл не распаковывается в инструкции if-else.iOS zip file Unzipping проблема с кодом

Неправильно ли что-либо, если это тогда любезно поможет мне.

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); 
    } 
    } 
}); 

ответ

0

Согласно вашей отладки кода

1) NSData * данные = [NSData dataWithContentsOfURL: Параметры URL: 0 ошибка: & ошибка];

данные «ноль»

путем добавления в PLIST ниже строк кода

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

вы получите ожидаемые выходные

+0

Благодаря @sandy, теперь его работает отлично :) –

+0

Принять и вверх проголосуйте за ответ, это поможет кому-то – sandy

Смежные вопросы