将 NSData UnsafePointer 操作转换为 Swift 3
Convert NSData UnsafePointer operation to Swift 3
我有一段时间将我的工作 NSData swift 2.2 代码转换为 3.
我在一个文件中有很多相似的错误,我无法编译它来检查我的转换。以下是原文:
let dataPtr = UnsafePointer<UInt8>(bytes).advancedBy(f_offset)
let retVal = UnsafePointer<T>(dataPtr).memory
我认为第一行被转换为:
let dataPtr = UnsafeRawPointer(bytes).advanced(by: f_offset)
我不知道如何转换第二行,因为 memory 不是 UnsafeRawPointer 的成员,Swift 3 似乎需要它。
如何转换这两行?
如果我遇到更具体的错误,我会 post 他们。
假设您的 bytes
取自某些 NSData
的 bytes
属性:
let bytes = nsData.bytes
那你就不用UnsafeRawPointer(_:)
:
let dataPtr = bytes.advanced(by: f_offset)
并且可以使用UnsafeRawPointer
的方法:
let retVal = dataPtr.load(as: T.self)
我有一段时间将我的工作 NSData swift 2.2 代码转换为 3.
我在一个文件中有很多相似的错误,我无法编译它来检查我的转换。以下是原文:
let dataPtr = UnsafePointer<UInt8>(bytes).advancedBy(f_offset)
let retVal = UnsafePointer<T>(dataPtr).memory
我认为第一行被转换为:
let dataPtr = UnsafeRawPointer(bytes).advanced(by: f_offset)
我不知道如何转换第二行,因为 memory 不是 UnsafeRawPointer 的成员,Swift 3 似乎需要它。
如何转换这两行?
如果我遇到更具体的错误,我会 post 他们。
假设您的 bytes
取自某些 NSData
的 bytes
属性:
let bytes = nsData.bytes
那你就不用UnsafeRawPointer(_:)
:
let dataPtr = bytes.advanced(by: f_offset)
并且可以使用UnsafeRawPointer
的方法:
let retVal = dataPtr.load(as: T.self)