Noah G. Noah G. - 2 months ago 130
Swift Question

How do you write a completion handler in Swift 3?

I was wondering how to make a completion handler for a function I'm creating in Swift 3.
This is how I did my function right before I updated to 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)
})}


But now I can't figure out the best approach that works right now.

Answer

In Swift 3 the function parameter labels in closures are gone.

Remove all occurrences of success: and add @escaping

func Logout(completionHandler:@escaping (Bool) -> ()) {

  backendless.userService.logout(
    { ( user : AnyObject!) -> () in
      print("User logged out.")
      completionHandler(true)
    },
    error: { ( fault : Fault!) -> () in
      print("Server reported an error: \(fault)")
      completionHandler(false)
  })