2016-04-16 9 views
0

Ich versuche, eine Eingabeaufforderung für Barrierefreiheit in OS X, aber die Konstante ist ein seltsames Format und weiß nicht, wie es funktioniert.CFDictionary mit nicht verwalteter Zeichenfolge?

var options: [String:String] = [:] 
options[kAXTrustedCheckOptionPrompt] = "YES" 
print(AXIsProcessTrustedWithOptions(options)) 

Die zweite Zeile ist offensichtlich ein Fehler aufgrund der widersprüchlichen Typ. Wie kann ich den Schlüssel als diesen Typ arbeiten lassen oder auf welche Weise soll ich ihn für den Request-Methodenaufruf verwenden?

+0

Was muss ich importieren, damit diese Arbeit auf einem Spielplatz funktioniert? – nhgrif

+0

'ApplicationServices.framework' –

Antwort

3

Sie übergeben die Zeichenfolge "YES", wenn Sie einen booleschen Wert übergeben möchten. Das kannst du nicht tun. Da dies der einzige Wert ist, den wir passieren, können wir Swift die magische Überbrückung für uns von [String: Bool] machen lassen.

import Foundation 
import ApplicationServices 

var options: [String: Bool] = [:] 
options[kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String] = true 
print(AXIsProcessTrustedWithOptions(options)) 
+0

Das funktioniert! Vielen Dank. Dies ist wahrscheinlich die nervigste und am schwersten zu findende Information aller Eingabeaufforderungen. Sogar in der Dokumentation ist es ein bisschen komisch. Ich habe den Wert als String-Typ-Form als älteres Objective-C-Beispiel erhalten, daher war ich mir nicht sicher, ob es überhaupt richtig war. Danke noch einmal! –

+0

Ich habe festgestellt, dass die App nicht in den Systemeinstellungen> Sicherheit> Zugänglichkeit angezeigt wird. Muss ich mein bezahltes Entwicklerkonto verwenden, um es signiert zu testen, um es zu erstellen, oder es speziell für OS X registrieren, damit es auch dort sichtbar wird? –

+1

Nein, es sollte sich selbst registrieren, aber Sie tun wahrscheinlich so etwas wie aus Xcode. In diesem Fall ist Xcode der Prozess, der die Kontrolle anfordert. Überprüfen Sie im Dialogfeld "Möchten Sie den Zugriff gewähren", welcher Prozess genannt wird. –