如何在Swift 3中压缩数据?

5

我在Swift 3的文件管理器中有一些文件。我想要上传它们,但是当我将它们转换成base 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)

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

2个回答

9
这里有一个用Swift 3编写的libcompression包装器。 https://github.com/mw99/SwiftDataCompression

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

所以,您可以像这样压缩您的数据:

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

5

作为参考,在Swift 5.1中实现此操作的方式如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接