Не удается преобразовать значение типа «CFString» в ожидаемый тип аргумента «UnsafePointer‹Void›» (он же «UnsafePointer‹()›»).

Я получаю ошибку сборки, когда определяю строку

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

И ошибка: не удается преобразовать значение типа «CFString» в ожидаемый тип аргумента «UnsafePointer» (он же «UnsafePointer‹()>»)


person Aryan Kashyap    schedule 30.03.2016    source источник
comment
Ошибка UnsafePointer обычно означает, что затронутый параметр используется в качестве указателя inout. Прочтите документацию с помощью QuickHelp, щелкните ⌥ или ⌘ по символу или нажмите ⇧⌘0 и введите имя метода.   -  person vadian    schedule 30.03.2016
comment
Привет @vadian, не могли бы вы привести пример кода, как это решить .. я просмотрел документацию и попробовал много способов, но не работает :(   -  person Aryan Kashyap    schedule 30.03.2016


Ответы (2)


Пытаться

let runFont = unsafeBitCast(CFDictionaryGetValue(CTRunGetAttributes(run), unsafeBitCast(kCTFontAttributeName, UnsafePointer<Void>.self)), CTFontRef.self)
person vadian    schedule 30.03.2016

Swift 3 версия ответа @vadian:

let runFont = unsafeBitCast(CFDictionaryGetValue(CTRunGetAttributes(run), unsafeBitCast(kCTFontAttributeName, to: UnsafeRawPointer.self)), to: CTFont.self)
person Ferenc Kiss    schedule 31.12.2016