Ich möchte einige Werte zurückgeben, nachdem die Langzeitoperation abgeschlossen ist. Aber außerdem möchte ich die Logik und die GUI teilen.
Zum Beispiel; Ich habe zwei Klassen
Also, vorher in Objective-C habe ich einfach eine Methode in SomeServices wie folgt hinzugefügt:
%Vor% In dieser Methode habe ich gerade completionBlock(myData, myError)
aufgerufen, um meine Werte an den tableviewcontroller zurückzugeben.
Was wäre die äquivalente Schließung, die ich in SomeServices.swift definieren muss und wie wird es in MyTableViewController aufgerufen?
Ich kann eine einfache Schließung wie diese nennen:
%Vor%Aber ich habe keine Ideen, wie man einen Abschluss mit einem completionBlock-Äquivalent definiert.
Jede Hilfe wäre willkommen
Das Plus an Schließungen ist, dass Sie alles weitergeben können, was Sie wollen. Methoden oder Funktionen - spielt keine Rolle.
Sie können eine Funktion innerhalb der Parameter übergeben und sie einfach aufrufen.
%Vor%Auszug aus: Apple Inc. "Die schnelle Programmiersprache." iBooks. Ссылка
Die Antwort finden Sie im Sprachführer:
Angenommen, Sie möchten einen String zurückgeben. Dies ist die Syntax
%Vor%Hier ist ein Beispiel, das zwei Zeichenfolgen verwendet und sie verkettet und das Ergebnis zurückgibt:
%Vor%Dann können Sie Folgendes tun:
%Vor%So benutze ich einen Singleton ServiceManager, um dies zu erreichen.
%Vor%Unten ist das Beispiel, wie ich die Singleton-Klasse verwende.
%Vor%Ich hoffe, das hilft jedem, der nach der gleichen Lösung sucht.