gpt4 book ai didi

swift - 使用 Swift 5+ 将数据写入 OutputStream

转载 作者:行者123 更新时间:2023-12-04 14:46:49 26 4
gpt4 key购买 nike

这段代码过去很好(从某种意义上说编译器没有提示):

extension OutputStream {
func write(_ data: Data) -> Int {
return data.withUnsafeBytes { pointer in
return self.write(pointer, maxLength: data.count)
}
}
}

从 Swift 5.0 开始,这会产生警告:

Warning: 'withUnsafeBytes' is deprecated: use withUnsafeBytes<R>(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R instead

我尝试使用建议的方法,但似乎无法解决 UnsafeRawBufferPointer进入UnsafePointer<UInt8>OutputStream.write最终需要。

如何以非弃用的方式编写此函数?

最佳答案

诀窍是使用 bindMemory 函数:

func write(_ data: Data) -> Int {
return data.withUnsafeBytes({ (rawBufferPointer: UnsafeRawBufferPointer) -> Int in
let bufferPointer = rawBufferPointer.bindMemory(to: UInt8.self)
return self.write(bufferPointer.baseAddress!, maxLength: data.count)
})
}

虽然这适用于 Swift 5.0,但显然存在一些问题;见 a related forum discussion .

关于swift - 使用 Swift 5+ 将数据写入 OutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55829812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com