如何处理“withUnsafeBytes”已弃用警告?

Saz*_*han -2 sha256 deprecated swift

我收到以下代码的弃用警告,

_ = data.withUnsafeBytes {
    _ = CC_SHA256($0, CC_LONG(data.count), &digest)
}
Run Code Online (Sandbox Code Playgroud)

'withUnsafeBytes' 已弃用:withUnsafeBytes<R>(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R改用

我该如何处理这个问题?

更新

根据 Martin 的建议,我使用了下面的Swift-5代码,

func sha256(data : Data) -> Data {
    var hash = [UInt8](repeating: 0,  count: Int(CC_SHA256_DIGEST_LENGTH))
    data.withUnsafeBytes {
        _ = CC_SHA256($0.baseAddress, CC_LONG(data.count), &hash)
    }
    return Data(hash)
}
Run Code Online (Sandbox Code Playgroud)

这甚至会给编译器带来错误,

类型“UnsafePointer<_>”的值没有成员“baseAddress”

更新2

Martins 解决方案在 Xcode 11.3.1 中运行良好。但它在 Xcode 11 中不起作用。

Saz*_*han 7

马丁的解决方案效果很好Xcode 11.3.1+

func sha256(data : Data) -> Data {
    var hash = [UInt8](repeating: 0,  count: Int(CC_SHA256_DIGEST_LENGTH))
    data.withUnsafeBytes {
        _ = CC_SHA256($0.baseAddress, CC_LONG(data.count), &hash)
    }
    return Data(hash)
}
Run Code Online (Sandbox Code Playgroud)