2015-07-25 10 views
9

Pytanie jest naprawdę proste, ale jakoś nie wiem jak to zrobić:Jak przekonwertować UnsafeMutablePointer <Void> na UInt8?

Jak przekonwertować UnsafeMutablePointer na UInt8?

Próbowałem przekształcenie go tak:

UInt8(theUnsafeMutablePointerVar) 

ale dał mi następujący błąd: nie może znaleźć inicjator dla typu „Uint8”, która akceptuje listę argumentów typu „UnsafeMutablePointer”

Odpowiedz

14

Najpierw należy przekonwertować wskaźnik na właściwy typ (wskaźnik na UInt8), a następnie można uzyskać dostęp do pamięci, którą wskazuje:

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

W Swift 3 wskaźnik void z C jest importowany do Swift jako UnsafeMutableRawPointer i można odczytać wskazywanego danych z

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

'UnsafePointer (theUnsafeMutablePointerVar)' po prostu nie Pracuj dla mnie. "Nie można wywołać inicjalizatora dla typu" UnsafePointer "z listą argumentów typu" (UnsafeMutablePointer ) "'. To samo, gdy próbuję 'UnsafeMutablePointer ' zamiast 'UnsafePointer'. – HughHughTeotl

+0

Którą wersję Xcode używasz? –

+0

Wersja 7.3.1 (7D1014) – HughHughTeotl

Powiązane problemy