2016-03-30 32 views
1

Ich bin ein Build-Fehler bekommen, wenn ich die LinieWert kann nicht vom Typ umwandeln ‚CFString‘ zu erwarteten Argumenttyp ‚UnsafePointer <Void>‘ (auch bekannt als ‚UnsafePointer <()>‘)

let runFont : CTFontRef = CFDictionaryGetValue(CTRunGetAttributes(run), kCTFontAttributeName) 

und der Fehler ist zu definieren: Wert kann nicht vom Typ 'CFString' zu erwarteten Argumenttyp umwandeln 'UnsafePointer' (auch bekannt als 'UnsafePointer <()>')

+0

Ein 'UnsafePointer' Fehler bedeutet in der Regel, dass der betroffene Parameter als Inout-Zeiger verwendet wird. Lesen Sie die Dokumentation von QuickHelp, ⌥ klicken oder ⌘ klicken Sie auf das Symbol oder drücken Sie ⇧⌘0 und geben Sie den Methodennamen ein. – vadian

+0

Hallo @Vadian können Sie mir bitte ein Code Beispiel wie es zu lösen .. Ich habe die Dokumentation angeschaut und versucht viele Möglichkeiten, aber funktioniert nicht :( –

Antwort

5

Versuchen

let runFont = unsafeBitCast(CFDictionaryGetValue(CTRunGetAttributes(run), unsafeBitCast(kCTFontAttributeName, UnsafePointer<Void>.self)), CTFontRef.self) 
+0

Danke, es hat funktioniert !! –

0

Swift 3-Version von @vadian antwort:

let runFont = unsafeBitCast(CFDictionaryGetValue(CTRunGetAttributes(run), unsafeBitCast(kCTFontAttributeName, to: UnsafeRawPointer.self)), to: CTFont.self)