32 votes

Comment écrire un gestionnaire d'achèvement en Swift 3 ?

Je me demandais comment créer un gestionnaire d'achèvement pour une fonction que je suis en train de créer en Swift 3. Voici comment j'ai créé ma fonction juste avant de passer à 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 n'arrive pas à trouver la meilleure approche qui fonctionne en ce moment.

65voto

vadian Points 29149

Dans Swift 3, les étiquettes des paramètres de fonction dans les fermetures ont disparu.

Supprimez 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)
}

0voto

MSPL Apps Points 34

Pas besoin 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)
    })
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X