Je me demandais comment créer un gestionnaire d’achèvement pour une fonction que je crée dans Swift 3 . Voici comment j’ai réalisé ma fonction juste avant de mettre à jour vers Swift 3:
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)
})}
Mais maintenant je ne peux pas trouver la meilleure approche qui fonctionne pour le moment.
Dans Swift 3, les étiquettes des paramètres de fonction dans les fermetures ont disparu.
Supprimer toutes les occurrences de success:
et ajouter @escaping
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)
})
}
Et l'utiliser
Logout() { success in
print(success)
}
Il n'est pas nécessaire d'inclure les noms de paramètres dans Swift 3. La complétion automatique suggère d'ajouter @esacping
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)
})
}