27

ASIHTTPRequest を使用して、いくつかのオーディオ ファイルを含むフォルダーを含む zip ファイルをダウンロードしました。SSZipArchiveとでファイルを解凍しようとしましZipArchiveたが、どちらも に基づいていminizipます。

コードをコンパイルすると、次のエラーが発生しますUndefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o

このファイルを iOS で解凍するにはどうすればよいですか?

4

3 に答える 3

51

過去に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];
于 2012-07-04T17:36:53.707 に答える
2

まず、iOS 7 で、Apple はファイルをネイティブに圧縮/解凍する機能を導入しました。メール、メッセージ、エアドロップ、および「開く」を介してzipファイルを送信するオプションもあります。重要なのは、zip ファイルが iOS でサポートされている必要があることです。サポートされているものもあれば、サポートされていないものもあります。最初のステップ: ファイルがサポートされているかどうかを調べます。これは、新しく保存したファイルの簡単なチェックによって行います。開いてみてください。「Waiting...」のままで止まっている場合は、サポートされていない可能性があります。その場合は、別のライブラリを試すか、回避策を使用してください。

現在、プログラムでこれを行うには、サードパーティのライブラリを使用して zip ファイルを保存し、それらを抽出する必要があります。多くの人/企業がそれらの使用を避けているため、これは理想的ではありません。そうは言っても、答えは正しいとマークされています.ZipArchiveは、特にSwiftをサポートするようになったため、優れたサードパーティツールです. Apple がネイティブ ライブラリを導入するまでは、これを使用することをお勧めします。

于 2015-07-08T18:13:52.873 に答える
-5

iOS6ではZIPファイルがフォルダのように扱われるようです。次のことを行うだけで成功しました。

[[NSFileManager defaultManager] copyItemAtPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"ZIP_FILE.zip/Contents/Test.m4a"].path
                                        toPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"Test.m4a"].path
                                         error:nil];

ディレクトリ リストを作成して、不明な内容のファイルを解凍できる可能性もあります。ただし、パスワードで保護された ZIP ファイルについては知りません。

于 2013-08-16T19:14:01.200 に答える