How to create a CFDictionary in an OS X target?

风格不统一 提交于 2019-12-05 13:45:20

For Swift 3 you need extra casting to CFDictionary. Otherwise Contextual type 'CFDictionary' cannot be used with dictionary literal is thrown.

let options: CFDictionary = [kSecImportExportPassphrase as String : "certificateKey"] as CFDictionary

See https://bugs.swift.org/browse/SR-2388 for more.

rintaro's comment worked for String literals, but not when I was working with a CFStringRef and a Swift String:

// Error: Contextual type 'CFDictionary' cannot be used with dictionary literal
let options: CFDictionary = [kSecImportExportPassphrase : "certificateKey"]

I had to cast the CFStringRef as a Swift String:

let options: CFDictionary = [kSecImportExportPassphrase as String : "certificateKey"] // works
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!