Wie erklären einen block mit Argumenten in swift?
Haben eine harte Zeit, herauszufinden, wie man richtig deklarieren/verwenden Blöcke mit swift.
Was wäre das swift-entspricht den folgenden code?
Dank.
^(PFUser *user, NSError *error) {
if (!user) {
NSLog(@"Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew) {
NSLog(@"User signed up and logged in through Facebook!");
} else {
NSLog(@"User logged in through Facebook!");
}
möglich, Duplikat der Wie funktioniert Apple ' s neue Programmiersprache Swift Griff-Blöcke und asynchron-Anfragen?
InformationsquelleAutor Brandon Foo | 2014-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Gegenwert von Objective-C blocks schnelle Verschlüsse, so dass es gehen würde wie folgt
InformationsquelleAutor Gabriele Petronella
Haben Sie viele Möglichkeiten angeboten, um pass ein block entspricht Funktion in Swift.
Fand ich drei.
Um das zu verstehen, schlage ich vor, Sie zu testen, Spielplatz dieses kleine Stück code.
Update: Es gibt 2 Besondere Fälle der Anonymen Funktion.
Die erste ist, dass die Funktion Signatur abgeleitet werden kann, so dass Sie nicht haben, um zu schreiben.
Der zweite Spezialfall funktioniert nur, wenn der block das Letzte argument, es heißt nachfolgende Schließung
Hier ist ein Beispiel (gemischt mit abgeleitet Unterschrift, um zu zeigen, Swift macht)
Schließlich:
Mit all dieser macht, was ich tun würde, ist das mischen nachfolgende Schließung und Typ-Inferenz (mit Namensgebung für die Lesbarkeit)
IMO ist es schöner als in ObjC
Vielen, vielen Dank. Ich schicke diese Antwort nur für Informationen, auch wenn die Frage ist, für objC.
...und IMHO, wenn Sie ' D verwendet die
__FUNCTION__
gewesen wäre, schöner.InformationsquelleAutor Francescu
Sehen, ob das funktioniert für Sie. Es ist verrückt, versuchen zu lernen, diese auf Tag zwei.
InformationsquelleAutor Dan Hixon
Kritisch, wenn
user
werden kannnil
dann muss deklariert als Optional. Also:erwähnenswert, dass der Typ für
user
umfasst?
zu zeigen, dassuser
ist ein optionale argument (entwedernil
oder der TypPFUser
).Anderen Antworten, die nicht mithilfe eines Optionalen, nicht einmal kompilieren.
InformationsquelleAutor GoZoner
Wenn Sie speichern möchten, block in eine variable, und rufen Sie es später, überprüfen Sie diese Antwort
InformationsquelleAutor Ashok Kumar S
//definieren, die es
//verwenden Sie es
InformationsquelleAutor Klajd Deda