Ответ 1
struct UnsafePointer<T>
имеет конструктор
/// Convert from a UnsafePointer of a different type.
///
/// This is a fundamentally unsafe conversion.
init<U>(_ from: UnsafePointer<U>)
который вы можете использовать здесь
doThingsOnRawData(UnsafePointer<UInt8>(data.bytes))
Вы даже можете опустить общий тип, потому что он выводится из контекста:
doThingsOnRawData(UnsafePointer(data.bytes))
Обновление для Swift 3: Начиная с Xcode 8 beta 6, вы не можете конвертировать непосредственно между различными небезопасными указателями.
Для data: NSData
, data.bytes
есть UnsafeRawPointer
, которое может
преобразуется в UnsafePointer<UInt8>
с помощью assumingMemoryBound
:
doThingsOnRawData(data.bytes.assumingMemoryBound(to: UInt8.self))
Для data: Data
это еще проще:
data.withUnsafeBytes { doThingsOnRawData($0) }