2017-09-07 25 views
1

AFNetworking 라이브러리를 사용하여 압축 폴더를 다운로드 중이며 파일을 다운로드 중입니다. 압축 해제를 시도 할 때 압축 파일을 열 수 없습니다. Mac 컴퓨터에서는 더블 클릭이나 Archive Utility로 압축을 풀지 않습니다. 대신SSZipArchive를 사용하여 압축 파일을 압축 해제하지 않고 파일 압축을 풉니 다.

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { 
    NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; 
    return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; 
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { 
    NSLog(@"File downloaded to: %@", filePath); 
    [SSZipArchive unzipFileAtPath:[filePath path] toDestination: [[filePath path] stringByDeletingLastPathComponent]]; 
}]; 
+0

'SSZipArchive'에서 어떤 종류의 오류가 발생합니까? – CodeChanger

+0

디렉토리에 대해 속성 설정 실패 : 2017-09-07 10_06_53.zip/.storage. – psk

+0

Error Domain = NSCocoaErrorDomain Code = 4 "파일".storage "가 없습니다." UserInfo = {NSFilePath = 2017-09-07 10_06_53.zip/.storage, NSUnderlyingError = 0x600000053ce0 {오류 도메인 = NSPOSIXErrorDomain 코드 = 2 "해당 파일 또는 디렉토리 없음"}} – psk

답변

0

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"vikas.sqlite"]; 
    NSString *outputPath = [paths objectAtIndex:0]; 
    [SSZipArchive unzipFileAtPath:path toDestination:outputPath delegate:self]; 

의 압축을 풀고 파일을 출력 경로에있을 것입니다보십시오.

0

[SSZipArchive unzipFileAtPath:[filePath path] toDestination: [[filePath path] stringByDeletingLastPathComponent]]; 

사용 :

[SSZipArchive unzipFileAtPath:zipPath toDestination:destinationPath overwrite:NO password:nil error:nil] 

파일 압축을

+1

[코드를 알맞게 포맷하십시오.] (https://stackoverflow.com/editing-help) – Dwhitz

+0

이 코드를 사용하지 않으면 같은 오류가 나타납니다. – psk

0

있는 NSArray * 경로 =의 NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString * basePath = ([경로 개수]> 0)? [경로 objectAtIndex : 0] : 없음;