我正在尝试将数据从Swift 4数据对象复制到OutputStream。大概可以在早期版本上使用的代码是
let len = data.withUnsafeBytes {
outputStream.write($0, maxLength: bytesRemaining)
XCode 9抱怨
无法将类型'UnsafeRawBufferPointer'的值转换为参数类型 'UnsafePointer
在OutputStream只接受部分数据的情况下,我也想不出如何提高这一点。
答案 0 :(得分:1)
您的data
很可能是[UInt8]
。解决此问题的最方便的方法是改为用Data
值代替。接口非常相似,因此除了声明外,它不必更改太多代码。或者,您可以像这样将字节复制到Data
中:
let len = Data(data).withUnsafeBytes {
outputStream.write($0, maxLength: bytesRemaining)
}
您可以使用[UInt8]
直接在UnsafeBufferPointer
上工作:
let len = data.withUnsafeBufferPointer {
if let address = $0.baseAddress {
outputStream.write(address, maxLength: bytesRemaining)
}
}
答案 1 :(得分:0)
尝试一下:
let data: NSData = dataToWrite
self.outputStream.write(UnsafePointer<UInt8>(data.bytes), maxLength: data.length)