0

https://github.com/mattconnolly/ZipArchiveを使用してループ内のファイルを解凍しています。問題は、解凍のループにあります。ラベルを更新できません。私のコード:

-(void) UnzipFiles
{

for (int i=0; i < zippedFiles.count; i++)
{

    [lb7 setText:[NSString stringWithFormat:@"Unziping file %d/%d",i+1,zippedFiles.count]]; //not working


      NSString *zipFilePath = [documentsDirectory stringByAppendingPathComponent:[zippedFiles objectAtIndex:i]];
      NSString *output = [documentsDirectory stringByAppendingPathComponent:[unzipFolders objectAtIndex:i]];

       NSLog(@"Unziping: %@ ",[zippedFiles objectAtIndex:i]);
       NSLog(@"To: %@",[unzipFolders objectAtIndex:i]);


      ZipArchive* za = [[ZipArchive alloc] init];

      if( [za UnzipOpenFile:zipFilePath] ) {

          if( [za UnzipFileTo:output overWrite:YES] != NO )
          {
            NSLog(@"Unziped %@ ",[zippedFiles objectAtIndex:i]);
          }

          [za UnzipCloseFile];
          [self deleteFile:[zippedFiles objectAtIndex:i]];
      }
      else
      {
        NSLog(@"The file %@ not exist",[zippedFiles objectAtIndex:i]);

      }
    doneBtn.hidden = NO;
    [lb7 setText:@""];


  }
}
4

1 に答える 1

2

バックグラウンド タスクで解凍を行い、UI の更新をメイン スレッドにディスパッチします。

-(void) UnzipFiles
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        for (int i=0; i < zippedFiles.count; i++) {
            ⋮
            dispatch_async(dispatch_get_main_queue(), ^{
                lb7.text = …;
            });
        }
    });
}
于 2013-07-14T08:00:09.760 に答える