しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SwiftでZIPを操作するライブラリ、zipを試してみた

Zipというライブラリを試してみました。

github.com

インストールは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)
}