Ios 如何在swift 3中压缩数据?

Ios 如何在swift 3中压缩数据?,ios,swift3,base64,compression,nsdata,Ios,Swift3,Base64,Compression,Nsdata,我在Swift 3的文件管理器中有一些文件。我想上传它们,但当我将它们转换成64进制时,它们的大小将是巨大的!因此,我想在将数据转换为base 64之前对其进行压缩 以下是我的转换代码: for i in 0...(rows?.count)! - 1 { let filePath = filesurl[fileManagerViewController.selectedFileIndex[i]] do { let fileData = try Da

我在Swift 3的文件管理器中有一些文件。我想上传它们,但当我将它们转换成64进制时,它们的大小将是巨大的!因此,我想在将数据转换为base 64之前对其进行压缩

以下是我的转换代码:

for i in 0...(rows?.count)! - 1 {

   let filePath = filesurl[fileManagerViewController.selectedFileIndex[i]]
        do {
            let fileData = try Data.init(contentsOf: filePath)

            let fileStream:String = fileData.base64EncodedString(options: NSData.Base64EncodingOptions.init(rawValue: 0))

            fileManagerViewController.upupload.append(fileStream)


        } catch {
            print(error.localizedDescription)
        }


        }
我曾经

let compressedData = fileData(UF_COMPRESSED)

但这对我不起作用,所以请在将文件转换为base 64以便上传之前帮助我压缩文件。

这是用Swift 3编写的
libcompression
包装器。

Swift libcompression包装器作为数据类型的扩展(ZLIB、LZFSE、LZMA、LZ4、deflate、RFC-1950、RFC-1951)

因此,您可以这样压缩数据:

let fileData = try Data.init(contentsOf: filePath)
let compressedData = fileData.compress(withAlgorithm: .LZFSE)

作为参考,从Swift 5.1开始,实现这一点的方法是:

let compressedData = fileData.compress(withAlgorithm: .LZFSE) as Data