【发布时间】:2019-04-22 10:39:29
【问题描述】:
我正在尝试为Data 类提供一个帮助方法来将字节转换为UInt32。到目前为止,这有效:
extension Data {
var uint32:UInt32 {
return UInt32(littleEndian: self.withUnsafeBytes { (ptr: UnsafePointer<UInt32>) in ptr.pointee })
}
}
从 swift 5 开始,编译器给出以下警告:
'withUnsafeBytes' is deprecated: use `withUnsafeBytes<R>(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R` instead`
经过一些研究,我尝试使用withUnsafeMutableBytes 和UnsafeMutablePointer<UInt32>
但这会产生错误:Cannot use mutating member on immutable value: 'self' is immutable。 (如果它不是不可变 getter 函数的一部分,这将起作用)
如何修复我的只读辅助变量,以便编译器不发出警告?
(当然同样适用于UInt8 或UInt16)
【问题讨论】: