Ich war nur neugierig, wie ich das angehen würde. Wenn ich eine Funktion hätte und wollte, dass etwas passiert, wenn sie vollständig ausgeführt wurde, wie würde ich dies der Funktion hinzufügen? Vielen Dank
function
swift
completionhandler
traw1233
quelle
quelle
Antworten:
Angenommen, Sie haben eine Download-Funktion zum Herunterladen einer Datei aus dem Netzwerk und möchten benachrichtigt werden, wenn die Download-Aufgabe abgeschlossen ist.
Ich hoffe es hilft.
quelle
Ich hatte Probleme, die Antworten zu verstehen, daher gehe ich davon aus, dass jeder andere Anfänger wie ich das gleiche Problem haben könnte wie ich.
Meine Lösung entspricht der Top-Antwort, ist aber hoffentlich etwas klarer und verständlicher für Anfänger oder Leute, die nur Probleme mit dem Verständnis im Allgemeinen haben.
So erstellen Sie eine Funktion mit einem Completion-Handler
um die Funktion zu nutzen
Ihre Ausgabe wird sein
Hoffe das hilft!
quelle
Einfaches Swift 4.0-Beispiel:
Wie man es benutzt:
quelle
Zu diesem Zweck können wir Verschlüsse verwenden. Versuche Folgendes
Irgendwann können wir diese Funktion wie unten angegeben aufrufen.
Weitere Informationen zu Verschlüssen finden Sie unter folgendem Link .
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html
quelle
Swift 5.0 +, einfach und kurz
Beispiel:
Stil 1
Stil 2
Verwenden:
Ausgabe
quelle
Ich bin ein wenig verwirrt über maßgeschneiderte Fertigstellungshandler. In Ihrem Beispiel:
Angenommen, Sie haben eine Download-Funktion zum Herunterladen einer Datei aus dem Netzwerk und möchten benachrichtigt werden, wenn die Download-Aufgabe abgeschlossen ist.
Ihre
// download code
wird weiterhin asynchron ausgeführt. Warum geht der Code nicht direkt zu Ihnenlet flag = true
undcompletion Handler(success: flag)
ohne darauf zu warten, dass Ihr Download-Code fertig ist?quelle
Zusätzlich zu oben: Der hintere Verschluss kann verwendet werden.
quelle