Tre*_*lyn 11 core-foundation swift swift3
我需要从CFDictionary
实例中读取和写入一些数据(以读取和更新照片中的EXIF数据).对于我的生活,我无法弄清楚如何在Swift 3中执行此操作.我想要的呼叫的签名是:
func CFDictionaryGetValue(CFDictionary!, UnsafeRawPointer!)
Run Code Online (Sandbox Code Playgroud)
我怎么把我的键(一个字符串)转换成一个UnsafeRawPointer
所以我可以将它传递给这个调用?
Cod*_*ent 14
如果您不必处理期望的其他Core Foundation函数CFDictionary
,可以通过转换为Swift本机来简化它Dictionary
:
if let dict = cfDict as? [String: AnyObject] {
print(dict["key"])
}
Run Code Online (Sandbox Code Playgroud)
请小心将a转换CFDictionary
为Swift本机字典。正如我刚刚在我自己的代码中发现的那样,桥接实际上是非常昂贵的(可以进行概要分析!),因此,如果调用它的次数很多(对我来说是如此),这可能会成为一个大问题。
请记住,这CFDictionary
是与桥接的免费电话NSDictionary
。因此,您可以做的最快的事情看起来像这样:
let cfDictionary: CFDictionary = <code that returns CFDictionary>
if let someValue = (cfDictionary as NSDictionary)["some key"] as? TargetType {
// do stuff with someValue
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6241 次 |
最近记录: |