根據Swift 3中的Data的文檔,我可以使用一個初始化程序來創建一個來自UnsafeRawPointer的數據。我實際需要的是相反的。我有一個數據,我想創建一個指向數據字節的UnsafeRawPointer。以下是我現在正在做的事情:在Swift 3中,如何從Data獲取UnsafeRawPointer?
1. let data = <from some where>
2. let unsafePointer = UnsafeMutablePointer<UInt8>.allocate(capacity: data.count)
3. unsafePointer.initialize(to: 0, count: data.count) // is this necessary?
4. data.copyBytes(to: unsafePointer, count: data.count)
5. let unsafeRawPointer = unsafePointer.deinitialize() // this is of the type UnsafeMutalbleRawPointer, and I can use it where UnsafeRawPointer is needed.
我驗證了這段代碼在Xcode Playground中有效。該代碼甚至可以在沒有行號3的情況下工作。我不確定有或沒有行有什麼區別。無論如何,我的問題是,我是否正確地做我想要的?有沒有更簡單的方法來做到這一點?
解決方案看起來比我的更好,更清潔。第二個也很直接。 – Jake
看來'withUnsafeBytes'對我來說是合適的。它看起來比NSData解決方案更安全 – Jake
'withUnsafeBytes'似乎有限。如果我想要幾個指針來執行所有操作,該怎麼辦? – ryantxr