首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OS X目标中创建CFDictionary?

如何在OS X目标中创建CFDictionary?
EN

Stack Overflow用户
提问于 2015-03-27 20:59:54
回答 2查看 4.1K关注 0票数 4

根据documentation的说法,CFDictionaryCreate用于在swift中实例化CFDictionary。

代码语言:javascript
复制
func CFDictionaryCreate(_ allocator: CFAllocator!,
                  _ keys: UnsafeMutablePointer<UnsafePointer<Void>>,
                  _ values: UnsafeMutablePointer<UnsafePointer<Void>>,
                  _ numValues: CFIndex,
                  _ keyCallBacks: UnsafePointer<CFDictionaryKeyCallBacks>,
                  _ valueCallBacks: UnsafePointer<CFDictionaryValueCallBacks>) -> CFDictionary!

如何创建keysvalues参数?到目前为止,我已经尝试使用swift的String类型,希望它能自动转换为合适的类型:

代码语言:javascript
复制
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不是keysvalues数组元素的正确类型:

代码语言:javascript
复制
main.swift:41:2: error: 'String' is not identical to 'UnsafePointer<Void>'
    &configKeys, &configValues, 3, &keyCallbacks, &valueCallbacks)

如何从String生成UnsafePointer<Void>

EN

回答 2

Stack Overflow用户

发布于 2016-10-08 20:35:09

对于Swift 3,你需要额外的CFDictionary类型转换。否则上下文类型“”CFDictionary“”不能与字典文字一起使用,将引发。“”

代码语言:javascript
复制
let options: CFDictionary = [kSecImportExportPassphrase as String : "certificateKey"] as CFDictionary

有关详细信息,请参阅https://bugs.swift.org/browse/SR-2388

票数 6
EN

Stack Overflow用户

发布于 2016-08-23 22:17:34

rintaro的注释适用于字符串文字,但当我使用CFStringRef和Swift String时就不行了

代码语言:javascript
复制
// Error: Contextual type 'CFDictionary' cannot be used with dictionary literal
let options: CFDictionary = [kSecImportExportPassphrase : "certificateKey"]

我不得不将CFStringRef转换为Swift字符串:

代码语言:javascript
复制
let options: CFDictionary = [kSecImportExportPassphrase as String : "certificateKey"] // works
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29301302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档