我正在尝试将数据压缩到内存中。我使用Gzip框架可以正常工作,但是我不想存储单个图像数据。我想发送10个以上的图像数据以追加到可变数据中并尝试压缩。但是问题是GZIp函数返回了Data。如何附加多个图像数据并调用Gzip函数。
GZIp用于压缩单个图像数据的函数:
公共函数gzip压缩(级别:Gzip.CompressionLevel =默认)引发 ->数据
这是我的压缩两个图像数据的代码:
let image = UIImage(named: "test")
let image2 = UIImage(named: "test12")
var sampleDataOne = image2?.jpegData(compressionQuality: 1.0)
var sampleDataTwo = image?.jpegData(compressionQuality: 1.0)
var zipMutableData = NSMutableData()
do {
zipMutableData.append(sampleDataOne)
zipMutableData.append(sampleDataTwo)
var resultData = try (zipMutableData.gzipped(level: .defaultCompression)) as! NSMutableData
} catch let error{
print(error)
}
我收到此错误:
'NSMutableData'类型的值没有成员'gzipped'
答案 0 :(得分:1)
您可以按以下方式Data
进行下调,以调用gzipped
方法,
var resultData = try (zipMutableData as Data).gzipped(level: .defaultCompression)
示例
let zipMutableData = NSMutableData()
zipMutableData.append("Steve".data(using: .utf8)!)
zipMutableData.append("Jobs".data(using: .utf8)!)
print(String(data: zipMutableData as Data, encoding: .utf8)!)
输出
SteveJobs
答案 1 :(得分:0)
这里没有理由使用NSMutableData
。只需使用Data
:
var zipMutableData = sampleDataOne + sampleDataTwo
分配as! NSMutableData
时也没有理由使用resultData
。就是Data
。