2010-03-24 3 views
1

목표 : 압축 파일을 다운로드하고 압축을 푼 다음 iPhone 앱의 Documents 디렉토리에 저장합니다.다운로드 한 파일을 압축 해제하는 가장 간단한 방법은?

이 결과 : ZIP 파일이 http://www.sunsetlakesoftware.com/molecules

내 응용 프로그램에 적응으로 :

다음 코드는 여기에있는 분자 응용 프로그램에있는 NSData에 추가 된 initWithGzippedData 방법을 사용합니다 성공적으로 다운로드되었습니다. 그것으로부터 새로운, 아마도 압축을 푼 파일은 원하는 이름 (MyFile.db)과 함께 Documents 디렉토리에 생성되지만 0 바이트를 갖습니다.

아무도 없습니까? 아니면 다운로드 한 파일을 Molecules 앱에서 사용 된 것보다 압축하는 간단한 방법이 있습니까?

답변

1

나는 당신의 문제가 당신이 ZIP 파일을 gzip으로 압축 해제하려고 시도하는 것일 수 있다고 생각한다. 그것들은 두 가지 다른 압축 알고리즘입니다.

나는 this NSData category (그 코드는 내가 this answer에 복사 한 코드)의 Molecules에서 gzip-deflating 코드를 기반으로 CocoaDev 위키에 기여했습니다. 당신이하고자하는 것은 그들의 -zlibDeflate 구현을 사용하는 것인데, 이것은 Zip 파일을 적절히 압축 해제해야합니다.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
+0

고맙습니다. gzip과 zip이 다른 것으로 의심됩니다. 필자는 내 Mac에서 항상 내 응용 프로그램이 내 서버에서 다운로드 한 파일을 압축하므로 zlibDeflate가 필요하다는 것을 의미합니다. 경로와 관련하여 언급 한 권장 사항을 어디에서 읽을 수 있습니까? 나는 항상 베스트 프랙티스를 열망한다. –

+0

@Scott Pendleton : 이것은 당신이 찾고있는 문서 일 것입니다 : http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/FilesandNetworking/FilesandNetworking.html#//apple_ref/doc/uid/TP40007072-CH21-SW6 일반적으로, 나는 당신이 경로 구성 요소를 하드 코딩하는 대신에 이러한 도우미 방법을 사용하고자한다고 생각한다. –

+0

링크가 더 이상 작동하지 않습니다. – funkybro

0

당신은 당신의 파일이 너무 큰 결코 확인해야합니다, 같이 대신 경로 구성 요소를 NSHomeDirectory()를 사용하여 추가의 문제에 관련없는

는 문서 디렉토리를 찾기위한 권장되는 방법은 다음과 같다 압축 해제가 시작되기 전에 메모리에 완전히로드하고 있습니다.

관련 문제