如何压缩swift3中的数据?
How to compress data in swift 3?
我在Swift的文件管理器里有一些文件,我想上传它们,但是当我将它们转换成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)
但这对我不起作用,所以请帮我压缩文件,然后再将它们转换为 base 64 以供上传。
这是用 Swift 3 编写的 libcompression
包装器。
https://github.com/mw99/SwiftDataCompression
Swift libcompression wrapper as an extension for the Data type (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
我在Swift的文件管理器里有一些文件,我想上传它们,但是当我将它们转换成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)
但这对我不起作用,所以请帮我压缩文件,然后再将它们转换为 base 64 以供上传。
这是用 Swift 3 编写的 libcompression
包装器。
https://github.com/mw99/SwiftDataCompression
Swift libcompression wrapper as an extension for the Data type (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