2014-09-28 1 views
1

저는 시뮬레이터에서 앱을 실행하여 .json 파일의 애셋과 변경 사항이 올바르게 구현되었는지 확인하려고하지만 앱을 실행하려고하면 실패합니다. 반환 : 'ZipArchiveProgressUpdateBlock'에 할당Zip 아카이브 진행 상태에 호환되지 않는 블록 포인터 유형이 할당되었습니다.

호환되지 않는 블록 포인터 타입에서 (일명 '무효 (^) (INT, INT, 부호 없음 long)') '무효 (^) (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) - 적어도 오류 메시지가 말하는 것입니다.

나는 그 실행에 익숙해 진 것이 놀랍다 - 컴파일 타임에 실패하지 않았습니까?