Ich habe versucht, die übliche Art, dies in Objective-c in swift für eine neue schnelle App zu replizieren, mit der ich herumspiele.Wie erfassen Sie die URL, die zum Starten einer OSX-Anwendung über URLScheme in Swift verwendet wird?
Wie dies in Objective-c zu tun, ist gut dokumentiert, erhalten Sie den freigegebenen Apple-Event-Manager und setEventHandler
Methode aufrufen, eine Funktion als Handler für die Ereignisklasse mit dem Ereignis-ID kAEGetURL
zu registrieren.
So in swift Ich versuche, das gleiche mit diesem Code zu tun hinzugefügt, um die Vorlage AppDelegate.swift in einem brandneuen Projekt:
func applicationWillFinishLaunching(aNotification: NSNotification?) {
var appleEventManager:NSAppleEventManager = NSAppleEventManager.sharedAppleEventManager()
appleEventManager.setEventHandler(self, andSelector: "handleGetURLEvent:withReplyEvent:", forEventClass: kInternetEventClass, andEventID: kAEGetURL)
}
func handleGetURLEvent(event: NSAppleEventDescriptor?, replyEvent: NSAppleEventDescriptor?) {
println("yay");
}
Soweit ich das sagen kann, ist nur eine Syntax Umwandlung des Standard-Objective-c-Aufrufs. Aber ich bekomme einen Typfehler sowohl für die forEventClass
und andEventId
Argumente an die setEventHandler
Methode:
'NSNumber' is not a subtype of 'AEEventClass'
für das forEventClass
Argument
und:
'NSNumber' is not a subtype of 'AEEventId'
für das andEventID
Argument
Ich bin nicht Sicher, was ich in diesem Stadium falsch mache, da sowohl als auch kAEGetURL
Konstanten sind, die von Apple definiert sind ... Sicherlich bin ich nicht verpflichtet, ihrezu konvertierenTyp zu den jeweils benötigten Typen? Und wenn ich bin, kann ich nicht herausfinden, wie.
Wenn jemand wirklich weiß, was hier passiert und was die richtige Terminologie ist, bitte meine Antwort bearbeiten. Vielen Dank! – MagerValp
Ja danke, das scheint zu funktionieren - fühlt sich komisch an, dass das aber nötig ist. –
Erwähnenswert ist, dass Ihre Selektorzeichenfolge "handleGetURLEvent: replyEvent:" lauten sollte, damit die obige Swift-Func-Deklaration korrekt übereinstimmt. –