Ich habe mich gefragt, wie ich einen Abschluss-Handler für eine Funktion erstellen kann, die ich in Swift 3 erstellt habe .. So habe ich meine Funktion ausgeführt, bevor ich zu Swift 3 wechselte:
func Logout(completionHandler: (success: Bool) -> ()) {
backendless.userService.logout(
{ ( user : AnyObject!) -> () in
print("User logged out.")
completionHandler(success: true)
},
error: { ( fault : Fault!) -> () in
print("Server reported an error: \(fault)")
completionHandler(success: false)
})}
Aber jetzt kann ich nicht herausfinden, was am besten funktioniert.
In Swift 3 sind die Funktionsparameteretiketten in Schließungen weg.
Entfernen Sie alle Vorkommen von success:
und fügen Sie @escaping
hinzu.
func Logout(completionHandler:@escaping (Bool) -> ()) {
backendless?.userService.logout(
{ user in
print("User logged out.")
completionHandler(true)
},
error: { fault in
print("Server reported an error: \(fault)")
completionHandler(false)
})
}
Und benutze es
Logout() { success in
print(success)
}
Es ist nicht erforderlich, Parameternamen in Swift 3 einzubeziehen
func Logout(completionHandler:@escaping (Bool) -> ()) {
backendless?.userService.logout(
{( user: Any?) -> (Void) in
print("User logged out.")
completionHandler(true)
},
error: { ( fault : Fault?) -> (Void) in
print("Server reported an error: \(fault)")
completionHandler(false)
})
}