CFDictionary使用非托管字符串?

1 accessibility swift

我正在尝试使OS X中的可访问性迅速生效,但是常量是一种奇怪的格式,并且不知道如何使其正常工作。

 var options: [String:String] = [:]
 options[kAXTrustedCheckOptionPrompt] = "YES"
 print(AXIsProcessTrustedWithOptions(options))
Run Code Online (Sandbox Code Playgroud)

由于类型冲突,第二行显然是一个错误。我如何才能使密钥作为该类型工作,或者应以何种方式将其强制转换为请求方法调用工作?

Rob*_*ier 5

当您要传递布尔值时,您正在传递字符串“ YES”。你不能那样做。由于这是我们传递的唯一值,因此我们可以让Swift从进行所有神奇的桥接[String: Bool]

import Foundation
import ApplicationServices

var options: [String: Bool] = [:]
options[kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String] = true
print(AXIsProcessTrustedWithOptions(options))
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,ObjC示例中可能带有“ @YES”。这是ObjC中的布尔值,而不是字符串。这是`[NSNumber numberWithBool:YES]`的快捷方式。在ObjC中,传统的布尔值是“是”和“否”。 (2认同)