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 解决方案。