将NSData UnsafePointer操作转换为Swift 3

时间:2016-09-14 19:51:41

标签: swift nsdata swift3

我正在努力将我工作的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)

我无法弄清楚如何转换第二行,因为内存不是Swift 3似乎需要的UnsafeRawPointer的成员。

如何转换这两行?

如果我收到更具体的错误,我会发布它们。

1 个答案:

答案 0 :(得分:1)

假设您的bytes取自某NSDatabytes财产:

let bytes = nsData.bytes

然后您无需使用UnsafeRawPointer(_:)

let dataPtr = bytes.advanced(by: f_offset)

可以使用UnsafeRawPointer的方法:

let retVal = dataPtr.load(as: T.self)