【发布时间】:2015-03-27 12:59:54
【问题描述】:
根据documentationCFDictionaryCreate用于实例化swift中的CFDictionary。
func CFDictionaryCreate(_ allocator: CFAllocator!,
_ keys: UnsafeMutablePointer<UnsafePointer<Void>>,
_ values: UnsafeMutablePointer<UnsafePointer<Void>>,
_ numValues: CFIndex,
_ keyCallBacks: UnsafePointer<CFDictionaryKeyCallBacks>,
_ valueCallBacks: UnsafePointer<CFDictionaryValueCallBacks>) -> CFDictionary!
如何创建 keys 和 values 参数?
到目前为止,我已经尝试使用 swift 的 String 类型,希望它能自动转换为适当的类型:
import Foundation
var keys : [String] = ["key1", "key2"]
var values : [String] = ["value1", "value2"]
var keyCallbacks = kCFTypeDictionaryKeyCallBacks
var valueCallbacks = kCFTypeDictionaryValueCallBacks
var dict : CFDictionary = CFDictionaryCreate(kCFAllocatorDefault,
&keys, &values, 2, &keyCallbacks, &valueCallbacks)
很遗憾,我收到一条错误消息,提示 String 不是 keys 和 values 数组元素的正确类型:
main.swift:41:2: error: 'String' is not identical to 'UnsafePointer<Void>'
&configKeys, &configValues, 3, &keyCallbacks, &valueCallbacks)
如何从String 生成UnsafePointer<Void>?
【问题讨论】:
-
最简单的方法是
let dict:CFDictionary = ["key1":"value1", "key2":"value2"]:) -
确实有效,谢谢:)
标签: swift macos core-foundation cfstring cfdictionary