无法使用getBytes将数据转换为int

时间:2018-06-19 14:06:13

标签: swift swift4

let objectData: Data = .....
var intValue: Int = 0
objectData.getBytes(&intValue, length: MemoryLayout<Int>.size) // there is an error
return intValue

编译器说的是

  

'&'与类型为'Int'的non-inout参数一起使用

怎么了?

编辑

顺便说一句,NSData正常工作

var intValue: Int = 0
(objectData as NSData).getBytes(&intValue, length: MemoryLayout<Int>.size)
return intValue

1 个答案:

答案 0 :(得分:1)

Data没有getBytes()方法。您可以像以前一样桥接到NSData, 或使用withUnsafeBytes()方法:

let objectData = Data(bytes: [1, 2, 0, 0, 0, 0, 0, 0])
let intValue: Int = objectData.withUnsafeBytes { $0.pointee }
print(intValue) // 513

(假设objectData至少包含8个字节)。

在闭包内部,$0是指向字节及其类型的指针 从上下文推断为UnsafePointer<Int>