Ich verwende FMDatabaseQueue
in meiner iOS-Anwendung. Ich bin im Verstehen, wie man den Wert beim Erstellen der Warteschlange zurückgibt. Schätze deine Hilfe !!
Es hängt davon ab, was Sie zurückgeben wollen. Was Sie jedoch verwirren könnte, ist Folgendes: Wenn Sie eine return
-Anweisung aus dem Block inDatabase
ausgeben, kehren Sie aus dem Block zurück und kehren nicht von der Methode zurück, die diesen inDatabase
-Block enthält.
Sie geben also einfach keine Werte aus dem Block inDatabase
zurück, sondern geben Werte von außerhalb des Blocks zurück. Was Sie normalerweise tun werden, ist, dass Sie Ihre Variable deklarieren, dass sie außerhalb des Blocks inDatabase
zurückgegeben wird, Ihr inDatabase
Block wird sie aktualisieren und dann, wenn der Block fertig ist, In diesem Fall geben Sie die Ergebnisse zurück (nicht aus dem inDatabase
-Block).
Ein gängiges Beispiel ist, wenn Sie ein NSMutableArray
erstellen: Erstellen Sie also das veränderbare Array außerhalb des Blocks und fügen Sie dann Werte aus dem Block hinzu, geben Sie aber die Ergebnisse nach zurück Beende den inDatabase
-Block:
Oder, wenn Sie mit einem fundamentalen Typ arbeiten, wie einem NSInteger
oder BOOL
oder was Sie haben, würden Sie die Variable mit einem __block
Qualifier deklarieren. Zum Beispiel verwende ich dies, um eine BOOL-Erfolgsvariable zurückzugeben, z. B .:
Obwohl dies beim ersten Mal verwirrend erscheinen mag, ist es hilfreich, dies zu verstehen. Wenn Sie GCD viel blockieren, ist dieses Muster sehr verbreitet. Wenn Sie einen Block haben (angezeigt durch das ^
-Zeichen), müssen Sie ihn fast als eine Funktion betrachten, die Sie innerhalb Ihrer Hauptmethode definieren. Wenn Sie in einem Block auf ein return
stoßen, kehren Sie zu der Methode zurück, die den Block enthält.
Für Einführungen zu Blöcken siehe:
Sie können andere Dinge in der Blockmethode übergeben, wie im folgenden Beispiel
Wenn Sie die Seite FMDB Github Page lesen, können Sie verstehen, wie die Dinge funktionieren
%Vor%