Pov*_*asB 4 macos core-foundation cfstring swift cfdictionary
根据文档 CFDictionaryCreate用于实例化CFDictionary swift.
func CFDictionaryCreate(_ allocator: CFAllocator!,
_ keys: UnsafeMutablePointer<UnsafePointer<Void>>,
_ values: UnsafeMutablePointer<UnsafePointer<Void>>,
_ numValues: CFIndex,
_ keyCallBacks: UnsafePointer<CFDictionaryKeyCallBacks>,
_ valueCallBacks: UnsafePointer<CFDictionaryValueCallBacks>) -> CFDictionary!
Run Code Online (Sandbox Code Playgroud)
我怎样才能创建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)
Run Code Online (Sandbox Code Playgroud)
不幸的是我收到一个错误,说String不是keys和values数组元素的正确类型:
main.swift:41:2: error: 'String' is not identical to 'UnsafePointer<Void>'
&configKeys, &configValues, 3, &keyCallbacks, &valueCallbacks)
Run Code Online (Sandbox Code Playgroud)
如何使一个UnsafePointer<Void>从String?
小智 6
对于Swift 3,你需要额外的施法CFDictionary.否则,上下文类型'CFDictionary'不能与字典文字一起使用.
let options: CFDictionary = [kSecImportExportPassphrase as String : "certificateKey"] as CFDictionary
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅https://bugs.swift.org/browse/SR-2388.
| 归档时间: |
|
| 查看次数: |
3316 次 |
| 最近记录: |