2

私は SWIFT を初めて使用し、OS X 用の最初のアプリケーションの実装を始めたばかりです。単純なプロジェクトを作成し、zip/rar ファイルを使用するためのさまざまなフレームワークを調べることにしました。推奨どおりに ZipArchive を使い始めましたが、プロジェクトで機能させることができませんでした - コンパイルさえしませんでした (おそらくセットアップに何か問題があるため)。Objective-Zip と SSZipArchive で同様の経験がありました。最後に、プロジェクトに完全に接続されたフレームワークのzip zapに出くわしました。

私は例を調べました:

ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"] error:nil];
ZZArchiveEntry* firstArchiveEntry = oldArchive.entries[0];
NSLog(@"The first entry's uncompressed size is %lu bytes.", (unsigned long)firstArchiveEntry.uncompressedSize);
NSLog(@"The first entry's data is: %@.", [firstArchiveEntry newDataWithError:nil]);

しかし、SWIFT で動作させることができませんでした。私が直面した問題は、ZZArchive で動作する NSURL を作成できなかったことです。

let zip:ZZArchive = ZZArchive(NSURL(fileURLWithPath:"/Users/../tesData/test.zip"))

につながった

致命的なエラー: オプション値のラップ解除中に予期せず nil が見つかりました

そして、私が試した他のすべては、ラップ解除エラーでコンパイルされなかったか、コンパイルされましたが、実行時にこのエラーが発生しました。

誰かが私の解凍の問題を解決するのを手伝ってくれるか、swiftでzip/rar/cbrファイルを圧縮/解凍/読み取る方法の解決策を教えてください.

4

1 に答える 1

2

これで修正されるはずです

var path = NSURL.fileURLWithPath("/Users/../tesData/test.zip")
var archive: ZZArchive = ZZArchive(URL:(fileURLWithPath:path!), error: &err)

これはswiftでのzzzipの実装です

    //Declare
    var err: NSError? = NSError()
    var path = NSURL.fileURLWithPath("/PathToZipFile/file.zip")
    var URL3 = NSURL.fileURLWithPath("/pathanywhereinsystemtosaveunzipedfolder/")
    var URL2 = NSURL.fileURLWithPath("/PathToUnzippedFile/file.xxx")
    var fileManager = NSFileManager.defaultManager() //1
    let archive: ZZArchive = ZZArchive(URL:(fileURLWithPath:path!), error: &err)//2-3

    //Create Folder
    fileManager.createDirectoryAtURL(URL3!, withIntermediateDirectories: true, attributes: nil, error: &err)

    //Write First entry of archive to file
    var k = archive.entries[0].newDataWithError(nil)
    k.writeToURL(URL2!, atomically: false)

これは、小さなテキスト ファイルと画像で機能します。エラーチェックがなく、最初のアーカイブエントリをファイルに書き込むだけであるため、制限があります。パスが間違っていると、コンパイルを試みるとすぐにエラーで終了します。

于 2014-10-26T00:38:15.400 に答える