【问题标题】:Convert NSData UnsafePointer operation to Swift 3将 NSData UnsafePointer 操作转换为 Swift 3
【发布时间】:2016-09-14 19:51:40
【问题描述】:

我在将工作中的 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 的成员。

如何转换这两行?

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

【问题讨论】:

标签: swift nsdata swift3


【解决方案1】:

假设您的bytes 取自NSDatabytes 属性:

let bytes = nsData.bytes

那你就不用UnsafeRawPointer(_:)了:

let dataPtr = bytes.advanced(by: f_offset)

并且可以使用UnsafeRawPointer的方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多