使用ASIHTTPRequest,我下载了一个包含多个音频文件的文件夹的zip文件。我尝试使用基于minizip的SSZipArchive
和ZipArchive
解压缩该文件。
当我编译代码时,出现错误: Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o
。
我该如何在iOS中解压缩此文件?
使用ASIHTTPRequest,我下载了一个包含多个音频文件的文件夹的zip文件。我尝试使用基于minizip的SSZipArchive
和ZipArchive
解压缩该文件。
当我编译代码时,出现错误: Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o
。
我该如何在iOS中解压缩此文件?
我过去曾经成功地使用过ZipArchive。它非常轻量级且易于使用,支持密码保护,在ZIP文件内部支持多个文件的压缩和解压缩。
基本用法如下:
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"zip"];
ZipArchive *zipArchive = [[ZipArchive alloc] init];
[zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"];
[zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES];
[zipArchive UnzipCloseFile];
[zipArchive release];
这个包的更多示例在这里
我在一些项目中也尝试过SSZipArchive。以下代码行将解压缩您的zip文件。
[SSZipArchive unzipFileAtPath:path toDestination:destination];
现在,以编程方式执行此操作目前需要使用第三方库来保存zip文件并提取它们。这并不理想,因为许多人/公司避免使用它们。话虽如此,被标记为正确答案的ZipArchive是一个很棒的第三方工具,特别是它现在支持Swift。在苹果推出本地库之前,我建议您使用它。
[[NSFileManager defaultManager] copyItemAtPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"ZIP_FILE.zip/Contents/Test.m4a"].path
toPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"Test.m4a"].path
error:nil];
你甚至可能有机会创建目录列表,以解压具有未知内容的文件。但不确定是否适用于受密码保护的ZIP文件。