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
答案 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>
。