Search code examples
iostokenstripe-paymentsswift3completionhandler

Expected Type Before / After —>, Expected Declaration in Swift 3


So, I created a typealias to store a completion handler, to later pass into a function called submitTokenToBackend using Stripe's iOS library. Here is my code:

// MARK: - Create Completion Handlers

typealias CompletionHandler = (_ token: AnyObject?, _ error: NSError?) -> Void

// MARK: - Submit Token To Backend

func submitTokenToBackend(completionHandler: CompletionHandler) {

}

// MARK: - STPPaymentCardTextFieldDelegate


func paymentCardTextFieldDidChange(_ textField: STPPaymentCardTextField) {
    print("Card number: \(textField.cardParams.number) Exp Month: \(textField.cardParams.expMonth) Exp Year: \(textField.cardParams.expYear) CVC: \(textField.cardParams.cvc)")
    self.buyButton.isEnabled = textField.isValid
}

// MARK: Initialize Card Params

let cardParams = STPCardParams()

func cardParamsFunc() {
    cardParams.number = "4242424242424242"
    cardParams.expMonth = 10
    cardParams.expYear = 2018
    cardParams.cvc = "123"
    STPAPIClient.shared().createToken(withCard: cardParams){ (token, error) in

        if let error = error {
            print(error.localizedDescription)

        } else if let token = token {

// HERE'S WHERE I'M GETTING ERRORS

            self.submitTokenToBackend(completionHandler: CompletionHandler) -> Void {
                if let error = error {
            print(error.localizedDescription)
                } else {
                    print("Show receipt page")
            }
        }
    }
}
}

I am getting these weird errors, now, in Swift 3 concerning my completion handler not having expected types. Not an isolated incident, either. Any thoughts?


Solution

  • self.submitTokenToBackend(completionHandler: CompletionHandler) -> Void {
    

    This is a declaration, not a method call. You can't pass a typealias as a parameter. And -> Void does not make sense here at all. You almost certainly meant

    self.submitTokenToBackend {
    

    If you have further questions on this, however, you need to provide code we can compile (see mcve) and list the exact errors. "Weird errors" is not particularly helpful for debugging.