2016-06-20 7 views
0

Angenommen, ich Funktion, die einige SachenSwift - wie wird der Completion Handler mit abschließendem Abschluss implementiert?

func doSomethingAwesome(completion:(success:Bool) -> Bool) { 

//some stuff 

} 

Wie funktioniert kann ich es hinteren Verschluss verwandeln? Wie kann ich die Steuerung vom Funktionskörper in den Abschlussblock umwandeln?

+2

Ich verstehe Ihre Frage nicht ganz. Was Sie zeigen, ist eine Funktionsimplementierung, die einen Verschlussparameter verwendet. "Trailing Closure Syntax" ist eine Kurzschreibweise, die für den Aufruf der Funktion gilt. Diese Funktion kann mit einer abschließenden Closure-Syntax aufgerufen werden. Darüber hinaus bin ich nicht sicher, was Sie fragen – Alexander

+2

Erinnerung: http://Stackoverflow.com/a/33020097/2227743 – Moritz

Antwort

1

Es ist bereits hinter Schließung. Sie können Fertigstellung im Körper nennen:

func doSomethingAwesome(completion:(success:Bool) -> Bool) { 

    //some stuff 
    let result = completion(success: true) 
} 

Und das ist, wie Sie Hinterverschluss Syntax können diese func Aufruf:

doSomethingAwesome { 
     success in 
     return success 
    } 
0

Sie können nur diese Funktion aufrufen (die bereits einen hinteren Verschluss hat), indem Sie :

doSomethingAwesome{ finished in 

    if finished{ 
      return true 
    } 
return false 
} 

Ihr Abschlusshandler ist vom Typ Bool. So wird Bool verwendet, wie ich hier gezeigt habe.

+1

Ihr Code wird nicht kompilieren: Sie haben 'Bool -> Void' Schließung. –

+0

Bearbeitet. Vielen Dank! :) –

+0

wird nicht neu kompiliert =) du hast nicht aufgelöste Bezeichner benutzt, benutze 'true' /' false' statt –