Zipというライブラリを試してみました。
インストールはCocoaPodsで行います。
pod 'Zip'
Unzip
一番簡単な解凍の方法は以下の通りです。
quickUnzipFileの引数にURLを渡すと、解凍先のURLが返ってきます。
do { let destinationURL = try Zip.quickUnzipFile(url) } catch let e { print(e) }
エラーの場合は以下のどちらかのインスタンスが返ってきます。
public enum ZipError: ErrorType { case FileNotFound case UnzipFail }
Unzipの引数はパスしかないので、NSDataをUnzipしたい場合は一度ファイルに保存する必要があります。
do { let data = NSData() NSFileManager.defaultManager().createFileAtPath(url.path ?? "", contents: data, attributes: nil) let destinationURL = try Zip.quickUnzipFile(url) } catch let e { print(e) }
保存先、パスワード、上書きの有無なども渡す事ができます。
do { try Zip.unzipFile(url, destination: destinationURL, overwrite: true, password: nil, progress: nil) } catch let e { print(e) }
圧縮する
圧縮はquickZipFilesなどのメソッドを使って実施します。
解凍と違う点として、引数にはファイルのURLの配列を渡します。
do { try Zip.quickZipFiles(urls, fileName: "fileName") } catch let e { print(e) }