2014-05-17 4 views
0

프로젝트에 필요한 모든 텍스트 파일을 포함 할 수있는 zip 파일이 있습니다. 앱을 처음 시작했을 때 ZipArchive를 사용하여 파일을 압축 해제했습니다. 그럼 사용하여 열 내 압축이 풀린 파일 중 하나를 찾을하려고 할 때 :NSBundle이 최근 unzip 파일을 인식하지 못합니다.

NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[engViDictionaryStore stringByDeletingPathExtension] ofType:[engViDictionaryStore pathExtension]]]; 

앱이 예외 그러나 "Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'"., 내가 두 번째로 응용 프로그램을 시작할 때, 그것은 압축 해제 된 파일을 찾아 잘 작동 할 수로 추락했다.

NSBundle이 압축 해제 된 파일을 압축 해제 한 후 바로 인식하는지 묻고 싶습니다.

+0

스레드 문제 또는 비슷한 문제가있는 경우를 대비해 파일의 압축을 푸는 방법을 알려주십시오. – TommyBs

+0

압축 해제 된 번들 파일은 번들의 일부가 될 수 있으며, 번들에 포함될 수 없습니다. 그들은 문서 디렉토리 같은 다른 곳에서 추출해야합니다. 파일의 압축이 풀리는 위치를 확인하고 해당 경로를 사용하십시오. – tGilani

+0

@TommyBs 메소드 applicationDidBecomeActive :에서 파일 압축을 풀었으므로 스레드 문제가 발생하지 않는다고 생각합니다. ZipArchive * zipArchive = [[ZipArchive alloc] init]; [zipArchive UnzipOpenFile : zipFilePath]; [zipArchive UnzipFileTo : bundlePath overWrite : YES]; [zipArchive UnzipCloseFile]; – LongNV

답변

0

앱을 설치하고 나면 번들을 변경하거나 수정할 수 없습니다. [테스트 중에도]

다른 디렉토리에 파일을 추출해야합니다. documents 디렉토리 & 파일 형식으로 파일에 액세스해야합니다.

+0

답변 해 주셔서 감사합니다. 그건 정말 트릭을 만든다. 단지 앱을 배포 한 후에 번들을 변경하거나 수정할 수 없다고했으나 앱을 두 번째로 실행하는 경우 NSBundle에서 내 압축 해제 된 리소스를 찾을 수 있습니다. 왜? – LongNV

+0

해당 리소스가 번들 안에 있지 않은지 확인합니다. Apple의 공용 API를 사용하여 수행 할 수 없습니다. 이 문제를 더 자세히 살펴보면 압축이 풀린 파일의 정확한 위치를 찾을 수 있습니다. – tGilani