2015-07-25 11 views
9

La domanda è molto semplice, ma in qualche modo non so come farlo:Come si converte un UnsafeMutablePointer <Void> in UInt8?

Come si converte un UnsafeMutablePointer in UInt8?

Ho provato a convertirlo in questo modo:

UInt8(theUnsafeMutablePointerVar) 

ma mi ha dato il seguente errore: Non riesci a trovare un inizializzatore per il tipo 'Uint8' che accetta una lista di argomenti di tipo 'UnsafeMutablePointer'

risposta

14

Devi convertire il puntatore nel tipo corretto prima (un puntatore a UInt8) e quindi puoi accedere alla memoria a cui punta:

let u8 = UnsafePointer<UInt8>(theUnsafeMutablePointerVar).memory 

In Swift 3, un puntatore nullo da C viene importato Swift come UnsafeMutableRawPointer, e si può leggere il punta-a dati con

let u8 = theUnsafeMutablePointerVar.load(as: UInt8.self) 
+3

'UnsafePointer (theUnsafeMutablePointerVar)' solo che non lo fa lavora per me. 'Impossibile richiamare l'inizializzatore per il tipo 'UnsafePointer ' con un elenco di argomenti di tipo '(UnsafeMutablePointer )''. Lo stesso se provo 'UnsafeMutablePointer ' piuttosto che 'UnsafePointer'. – HughHughTeotl

+0

Quale versione di Xcode stai usando? –

+0

Versione 7.3.1 (7D1014) – HughHughTeotl

Problemi correlati