ios - 将字典键传递给 CFDictionaryGetValue

标签 ios swift cocoa swift2 cfdictionary

由于 Swift 中的 UnsafePointer,我感到头疼。

这是我要调用的方法:

func CFDictionaryGetValue(theDict: CFDictionary!, _ key: UnsafePointer<Void>) -> UnsafePointer<Void>

我就是这样做的。

 let ds: SCDynamicStoreRef = SCDynamicStoreCreate(nil, "setNet" as CFString, nil, nil)!


let list = SCDynamicStoreCopyProxies(ds)

print(list!)
print(CFDictionaryGetValue(list, UnsafePointer("HTTPPort")))

但是这会返回一个错误。我不知道如何将字典键传递给这个方法。如果我删除 UnsafePointer("HTTPPort") 并使用 "HTTPPort" 代替,我会收到运行时错误。"

如何访问字典值?

最佳答案

最简单的解决方案是利用免费桥接 在 CFDictionaryNSDictionary 之间,并使用 NSDictionary 访问器方法:

let ds = SCDynamicStoreCreate(nil, "setNet", nil, nil)!

if let list = SCDynamicStoreCopyProxies(ds) as NSDictionary? {
    if let port = list[kSCPropNetProxiesHTTPPort as NSString] as? Int {
        print("HTTPPort:", port)
    }
}

但只是为了完整起见:可以CFDictionaryGetValue:

if let list = SCDynamicStoreCopyProxies(ds)  {
    let key = kSCPropNetProxiesHTTPPort
    let port = unsafeBitCast(CFDictionaryGetValue(list, unsafeAddressOf(key)), NSObject!.self)
    if port != nil {
        print("HTTPPort:", port)
    }
}

关于ios - 将字典键传递给 CFDictionaryGetValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36174213/

相关文章:

ios - 如果修改了任何属性值,则更改数组内所有属性的值 swift (wiiSet)

ios - 如何将 AVCaptureStillImageOutput 转换为 UIImage 并另存为 NSData?

ios - 在 UILabel 中覆盖 "text"在 iOS 6 中不起作用

ios - 如何解析 "Binary operator ' = =' cannot be applied to two ' Foo' 操作数”?

swift - 根据百分比填充描边颜色,即 80%、70% 或任何其他百分比

ios - XCUITest - 按标签搜索按钮返回两个元素(按钮和静态文本)

ios swift - UI 设计师自适应 iPhone 布局

objective-c - 为什么从用户输入中获取的两个 NSString 最终具有相同的地址?

objective-c - 如何从 NSMatrix 获取 NSButton (CheckBox) 的状态

windows - 寻找一种 cocoa 方法来模拟没有事件作为参数的按钮按下