我在Swift做了一个游戏,但我需要在我的网站上下载.zip文件,并在游戏中使用内容(图像)。 实际上,我下载.zip文件并将其存储在文档中,我需要将文件解压缩到相同的文档文件夹中。
我尝试过marmelroy的Zip,iOS 9压缩模块和tidwall的DeflateSwift,但这些都没有奏效。如果它与iOS 8兼容可能会很好。
答案 0 :(得分:9)
我最近发布了一个Swift原生框架,允许您创建,读取和更新ZIP存档文件:ZIP Foundation。
它使用内部使用libcompression来获得出色的压缩性能。
解压缩文件基本上只有一行:
try fileManager.unzipItem(at: sourceURL, to: destinationURL)
包含某些上下文的完整示例如下所示:
let fileManager = FileManager()
let currentWorkingPath = fileManager.currentDirectoryPath
var sourceURL = URL(fileURLWithPath: currentWorkingPath)
sourceURL.appendPathComponent("archive.zip")
var destinationURL = URL(fileURLWithPath: currentWorkingPath)
destinationURL.appendPathComponent("directory")
do {
try fileManager.createDirectory(at: destinationURL, withIntermediateDirectories: true, attributes: nil)
try fileManager.unzipItem(at: sourceURL, to: destinationURL)
} catch {
print("Extraction of ZIP archive failed with error:\(error)")
}
README on GitHub包含更多信息。所有公共方法也可以通过Xcode快速帮助获得完整的文档。
我还写了一篇关于性能特征here的博客文章。
答案 1 :(得分:2)
我找到了以下名为Minizip的库。试试吧
您可以使用Zip framework使用Swift
解压缩文件。简单写在Swift
示例代码
do {
let filePath = NSBundle.mainBundle().URLForResource("file", withExtension: "zip")!
let unzipDirectory = try Zip.quickUnzipFile(filePath) // Unzip
let zipFilePath = try Zip.quickZipFiles([filePath], fileName: "archive") // Zip
}
catch {
print("Something went wrong")
}
如果不适用于minizip,你可以使用ZipArchive,它不是用swift写的,而是用Objective-C
答案 2 :(得分:1)
我使用了SSZipArchive和一个桥接标题:
答案 3 :(得分:-2)
您可以使用
let unzipDirectory= try Zip.quickUnzipFile(filePath) //to unZip your folder.
如果您需要更多帮助,可以获得一些好的website。
对我有帮助。
我希望问题能解决。