ZIP Foundation поддерживает доступ к отдельным записям в ZIP-архивах.
Вы должны инициализировать архив, передав URL-адрес файла инициализатору Archive
.
После этого вы можете получить доступ к определенной записи по подписке:
let fileManager = FileManager()
let currentWorkingPath = fileManager.currentDirectoryPath
var archiveURL = URL(fileURLWithPath: currentWorkingPath)
archiveURL.appendPathComponent("test.zip")
guard let archive = Archive(url: archiveURL, accessMode: .read) else {
return
}
guard let entry = archive["file.txt"] else {
return
}
var destinationURL = URL(fileURLWithPath: currentWorkingPath)
destinationURL.appendPathComponent("out.txt")
do {
try archive.extract(entry, to: destinationURL)
} catch {
print("Extracting entry from archive failed with error:\(error)")
}
Вы также можете напрямую получить доступ к содержимому entry
с помощью API на основе замыкания. Это позволяет обрабатывать запись без предварительной записи в файловую систему:
try archive.extract(entry, consumer: { (data) in
print(data.count)
})