2017-02-14 3 views
0

Wie rufen Sie eine Funktion auf der Grundlage eines Funktionsnamens String var und übergeben Sie ein Argument an die Funktion? Ich habe versucht, dies zu tun, ist Swift und hat es endlich verstanden.Swift 3 führen Selektor mit Argument

Antwort

0

In Swift 3 - Inbound 'params' als [String: Alle], wobei params [ "Funktion"] == "getSomeData"

let funcName = String(format: "%@:", (params["function"] as? String)!) 
let selector = NSSelectorFromString(funcName) 
self.perform(selector, with: params) 

func getSomeData(_ params: [String: Any]) { 
    print(params) 
} 
+0

Ihre Lösung funktioniert, ist aber nicht zu empfehlen. Swift entfernt sich davon, Selektoren aus Streichern zu erstellen. Ich wäre überhaupt nicht überrascht, wenn Swift diese Fähigkeit in naher Zukunft vollständig beseitigen würde. Stattdessen sollten Sie die Swift-Version der Funktionssignatur verwenden und KEINEN Selektor aus einer Zeichenfolge erstellen. –

+1

Was ist der empfohlene Weg? –

+0

Ja Duncan C, danke für dein Feedback; aber tut mir leid, aber es ist nicht sehr konstruktiv? Wo ist der Code hinter diesem Rat? – user3069232