使用SWIFT的Zip / Rar文件

时间:2014-10-05 15:53:10

标签: objective-c swift zip zipzap

我是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文件的解决方案。

1 个答案:

答案 0 :(得分: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)

适用于小型文本文件和图像。由于没有错误检查并且只将第一个存档文件写入文件,它确实有其局限性。如果任何路径出错,一旦您尝试编译,就会以错误结束。