Syntax der Callback-Funktion in Swift

9

Ich versuche eine Funktion an eine andere Funktion zu übergeben und lasse dann die übergebene Funktion ausführen, indem ich ihr eine Variable übergebe.

Hier ist mein Code:

%Vor%

Der Fehler, den ich bekomme, ist in

%Vor%

Der Fehler ist "Kann den Werttyp von 'String' nicht in den erwarteten Argumenttyp '()' konvertieren. Ich weiß, dass es eine Frage der Syntax ist - weiß einfach nicht, was es sein soll.

    
Floyd Resler 22.10.2015, 20:54
quelle

4 Antworten

27

Robs Antwort ist korrekt, obwohl ich ein Beispiel für einen einfachen Callback / Completion-Handler geben möchte, können Sie ein Beispielprojekt unten herunterladen und mit der Eingabe getBoolValue experimentieren.

Beispielprojekt herunterladen

%Vor%

Wichtig zu verstehen:

%Vor%     
Dan Beaulieu 22.10.2015, 21:08
quelle
5

Sie haben callback deklariert, keine Argumente zu übernehmen, und dann versuchen Sie, ein Argument zu übergeben.

Sie haben den Typ (()->(String))? angegeben. Dies ist eine optionale Funktion, die keine Argumente akzeptiert und ein String zurückgibt.

Vielleicht möchten Sie ((String)->())? angeben, was eine optionale Funktion ist, die ein String übernimmt und nichts zurückgibt.

    
rob mayoff 22.10.2015 21:03
quelle
2

In den Parametern für showStandardPrompt deklarieren Sie callback mit dem Typ ()->(String) . Dies ist eine Funktion, die keine Parameter akzeptiert und ein String zurückgibt.

Sie nennen es dann mit field.text! als Parameter, was offensichtlich mit dem vorher angegebenen Typ in Konflikt steht.

Sie müssen den für callback angegebenen Typ korrigieren, um ein Argument String zu übernehmen und nichts zurückzugeben:

%Vor%     
stonesam92 22.10.2015 21:06
quelle
2

probiere unter dem für Swift 3 aktualisierten Code

aus %Vor%     
Anand Verma 11.11.2017 16:53
quelle

Tags und Links