Siriss
Siriss

Reputation: 3777

Convert NSData UnsafePointer operation to Swift 3

I am having a heck of a time converting my working NSData swift 2.2 code into 3.

I have a lot of errors that are all similar in one file, and I can't get it to compile to check my conversion. Here are the original lines:

let dataPtr = UnsafePointer<UInt8>(bytes).advancedBy(f_offset)

let retVal = UnsafePointer<T>(dataPtr).memory

I think the first line gets converted to this:

let dataPtr = UnsafeRawPointer(bytes).advanced(by: f_offset)

I can't figure out how to convert the second line, because memory is not a member of UnsafeRawPointer, which Swift 3 seems to require.

How can I convert those two lines?

If I get more specific errors, I will post them.

Upvotes: 2

Views: 1657

Answers (1)

OOPer
OOPer

Reputation: 47896

Assuming your bytes is taken from some NSData's bytes property:

let bytes = nsData.bytes

Then you have no need to use UnsafeRawPointer(_:):

let dataPtr = bytes.advanced(by: f_offset)

And may use a method of UnsafeRawPointer:

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

Upvotes: 1

Related Questions