NSData.decompressed 在 Swift 中抛出错误
NSData.decompressed throws error in Swift
大家好,我想用Swift中NSData的解压方法解压一个gz文件。
该文件已成功加载到 NSData 中,但如果我尝试解压缩它,它会出错。
var data: NSData
let paths = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask)
var url = paths[0]
url.appendPathComponent("g.srt.gz")
do {
data = try Data(contentsOf: url) as NSData
print(data)
let dec = try data.decompressed(using: .zlib)
} catch { print(error.localizedDescription) }
这是我看到的输出:
{length = 17859, bytes = 0x1f8b0800 00000000 00038d7d cd8ee446 ... 10deea38 94b70000 }
The operation couldn’t be completed. (Cocoa error 5377.)
我尝试了所有的解压算法,但我总是得到上面的错误。在 Finder 中我可以解压它,所以它没有损坏。
我是否遗漏了什么(Info.plist 中的能力或其他东西)?我不想使用任何外部库或框架。
我的环境是macOS 11.3.1,Xcode12.5,Swift5
该数据是 gzip 流,而不是 zlib 流。您使用的方法 does not have an option for gzip. See 解决方案。
大家好,我想用Swift中NSData的解压方法解压一个gz文件。 该文件已成功加载到 NSData 中,但如果我尝试解压缩它,它会出错。
var data: NSData
let paths = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask)
var url = paths[0]
url.appendPathComponent("g.srt.gz")
do {
data = try Data(contentsOf: url) as NSData
print(data)
let dec = try data.decompressed(using: .zlib)
} catch { print(error.localizedDescription) }
这是我看到的输出:
{length = 17859, bytes = 0x1f8b0800 00000000 00038d7d cd8ee446 ... 10deea38 94b70000 }
The operation couldn’t be completed. (Cocoa error 5377.)
我尝试了所有的解压算法,但我总是得到上面的错误。在 Finder 中我可以解压它,所以它没有损坏。
我是否遗漏了什么(Info.plist 中的能力或其他东西)?我不想使用任何外部库或框架。
我的环境是macOS 11.3.1,Xcode12.5,Swift5
该数据是 gzip 流,而不是 zlib 流。您使用的方法 does not have an option for gzip. See