我想下载一个zip文件,其中包含一个包含大量文件音频的文件夹,用于我在字典中的发音。我使用ASIHTTPRequest下载它,我的问题是“我不知道如何解压缩该文件”。我尝试使用SSZipArchive
和ZipArchive
这两个都基于minizip
,但在编译代码Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o
时出错。你能给我一些建议吗
答案 0 :(得分:49)
我过去曾成功使用 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];
有关此程序包的更多示例here
我在某些项目中也尝试了 SSZipArchive 。 下面的行将解压缩您的zip文件。
[SSZipArchive unzipFileAtPath:path toDestination:destination];
答案 1 :(得分:2)
首先,在iOS 7中,Apple引入了本机压缩/解压缩文件的功能。您还可以选择通过Mail,Messages,Airdrop和“Open in”发送zip文件。关键是: iOS必须支持zip文件有些是,有些则不是。第一步:找出您的文件是否受支持。通过简单检查新保存的文件来执行此操作。试着打开它。如果它被卡在“等待......”,则可能不受支持。如果是这种情况,请尝试使用其他库或使用解决方法。
现在,以编程方式执行此操作目前需要使用第三方库来保存zip文件并将其解压缩。这并不理想,因为很多人/公司都避免使用它们。话虽如此,答案标记正确,ZipArchive是一个伟大的第三方工具,特别是因为它现在支持Swift。我建议使用它,直到Apple引入本地库。
答案 2 :(得分:-5)
在iOS6上,ZIP文件似乎像文件夹一样处理。只需执行以下操作即可获得成功:
[[NSFileManager defaultManager] copyItemAtPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"ZIP_FILE.zip/Contents/Test.m4a"].path
toPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"Test.m4a"].path
error:nil];
您甚至可以制作目录列表以解压缩包含未知内容的文件。不过,不知道密码保护的ZIP文件。