Closure Default Initializer fehlt - schnelle Schließung Variablendeklaration? - ios, iphone, swift, Verschlüsse

Ich habe den Abschluss außerhalb der ViewController-Klasse deklariert, ich habe eine Variable dieses Abschlusses in der ViewController-Klasse erstellt, aber es zeigt den Fehler des Standardinitialisierers, der für diesen Abschluss fehlt.

Ich verstehe die Folgen von Variablen undKonstante Deklaration und Standardinitialisierung müssen zum Zeitpunkt der Deklaration zugewiesen werden. aber ich konnte nicht verstehen, was die Standard-Initialisierung meiner Schließung sein könnte, ich versuchte ein paar Tricks, um es zu lösen, aber es hat nicht funktioniert.

Hier ist meine Abschlusserklärung

typealias completionBlock = (String) -> ()

und hier ist meine variable Deklaration dieses Abschlusses, die ihn initialisieren soll.

class ViewController: UIViewController {

var completionHandler: completionBlock = // What could be the default initializer to this closure

override func viewDidLoad() {
super.viewDidLoad()
}
}

Ich möchte erreichen, dass dieser Block immer dann aufgerufen wird, wenn diese Werte übergeben werden sollen. Dasselbe gilt für die externe CompletionBlock-Deklaration von object-c.

Antworten:

5 für die Antwort № 1

Sie haben 3 Optionen

  • Standardeigenschaft:

    var completionHandler : completionBlock = { _ in }
    
  • Implizit unwrapped Optional - tun Sie dies nur dann, wenn Sie sich 100% sicher sind, dass ein Wert gesetzt wird, bevor Sie den completionHandler:

    var completionHandler: completionBlock!
    
  • "regulär" Optional

    var completionHandler: completionBlock?
    
    // later callable via
    completionHandler?("hi")
    

1 für die Antwort № 2

Ich denke, es sollte so etwas sein?

var completionHandler: completionBlock = { stringValue  in
// but your code here
}

Speisekarte