2014-09-28 47 views
1

我只是试图在模拟器中运行一个应用程序来查看资产和对.json文件的更改是否正确实现,但是,当我尝试运行该应用程序失败并且返回:Zip归档进程有指定的不兼容块指针类型

不相容的嵌段指针类型分配给 'ZipArchiveProgressUpdateBlock' 从(又名 '空隙(^)(INT,INT,无符号长整数)') '的空隙(^)(INT,INT,INT)'

整个区块位于下方,问题参考特定行:

zip.progressBlock = ^(INT百分比,INT filesProcessed,INT numFiles)

ZipArchive* zip = [[ZipArchive alloc] init]; 
[zip UnzipOpenFile:pathToZipFile]; 
zip.delegate = self; 
zip.progressBlock =^(int percentage, int filesProcessed, int numFiles){ 
[self showProgress:PackageDownloadStateUnzipping progress:(float)percentage/100.0f]; 
}; 
BOOL success = [zip UnzipFileTo:unzippedDestination overWrite:YES]; 

if (!success){ 
    self.state = PackageDownloadStateUnzipError; 
}else{ 
    self.state = PackageDownloadStateUnzipped; 
} 

回答

1

阅读错误。它会告诉你这个问题。该块需要三个参数,类型为int,intunsigned long。但是你的块有三个int参数。

只需将第三个参数的类型从int更改为unsigned long即可。

zip.progressBlock =^(int percentage, int filesProcessed, unsigned long numFiles){ 
    [self showProgress:PackageDownloadStateUnzipping progress:(float)percentage/100.0f]; 
}; 
0

嗯,你指定块需要(INT,INT,INT),但ZipArchive希望你传递一个需要(INT, int,unsigned long) - 至少,这就是错误信息所说的。

我很惊讶它正在运行 - 你确定它在编译时没有失败吗?