如何传递UnsafeMutablePointer类型的参数>
我必须在Swift中使用CFDictionaryCreate
方法(documentation link)。如何传递UnsafeMutablePointer类型的参数<UnsafePointer <Void>>
我很难正确初始化输入参数以便传递UnsafeMutablePointer<UnsafePointer<Void>>
类型的参数(键和值)。
这里是我的代码:
var font_name: CFStringRef! = CFStringCreateWithCString(nil, "Courier", kCFStringEncodingASCII)
var font: CTFontRef! = CTFontCreateWithName(font_name, 25.0, nil)
var keys: [UnsafePointer<Void>] = ???? // how to intialize with "kCTFontAttributeName"
var values: [UnsafePointer<Void>] = ???? // how to intialize with "font" variable
var keyCallBacks = kCFTypeDictionaryKeyCallBacks
var valueCallBacks = kCFTypeDictionaryValueCallBacks
var font_attributes: CFDictionaryRef! = CFDictionaryCreate(kCFAllocatorDefault, &keys, &values, sizeofValue(keys), &keyCallBacks, &valueCallBacks)
var attr_string: CFAttributedStringRef! = CFAttributedStringCreate(nil, "hello", font_attributes)
您可以简单地使用[ NSString : AnyObject ]
型,它是自动桥接NSDictionary
或 CFDictionary
的斯威夫特字典。请注意,您也不需要CFStringRef
。
let font = CTFontCreateWithName("Courier", 25.0, nil)
let attributes : [ NSString : AnyObject ] = [ kCTFontAttributeName : font ]
let attrString = CFAttributedStringCreate(nil, "Hello", attributes)
另外,
let attrString = NSAttributedString(string: "Hello", attributes: attributes)
因为NSAttributedString
是免费电话与 CFAttributedString
桥接。
只是为了完整起见,这里是你如何使用 CFDictionaryCreate()
:
let font = CTFontCreateWithName("Courier", 25.0, nil)
var keys = [ unsafeAddressOf(kCTFontAttributeName) ]
var values = [ unsafeAddressOf(font) ]
var keyCallbacks = kCFTypeDictionaryKeyCallBacks
var valueCallbacks = kCFTypeDictionaryValueCallBacks
let attributes = CFDictionaryCreate(nil, &keys, &values, 1, &keyCallbacks, &valueCallbacks)
let attrString = CFAttributedStringCreate(nil, "Hello", attributes)
谢谢Genius!它效果很好。只是为了增加我的知识,任何想法如何处理UnsafeMutablePointer类型的参数
@san:查看更新回答:) –
你确定,你不能用斯威夫特字典呢?一个Swift的'[NSString:AnyObject]'字典会自动桥接到'NSDictionary'(反之亦然),'NSDictionary'是免费桥接'CFDictionary'。 - 也许你应该展示你的具体案例。 –
@MartinR,我已经添加了代码。我不确定是否可以在上面的代码中使用NSDictionary。你能帮我一下吗? – san
你需要什么'font_attributes'字典? –