【问题标题】:creditCard.validateCardReturningError(&error) in stripe iOS integration条纹 iOS 集成中的 credit Card.validate CardReturningError(error)
【发布时间】:2015-09-23 00:14:54
【问题描述】:

我正在尝试使用 swift 将 Stripe 集成到 iOS 应用程序中。而且我不断从该行收到这些错误:creditCard.validateCardReturningError(&error) 错误 1: '_' 不能转换为 '() throws ->()' 错误 2: 不能转换为 'BooleanType'

  var error: NSError?
    if (creditCard.validateCardReturningError(&error)){
        var stripeError: NSError!
        Stripe.createTokenWithCard(creditCard, completion: { (token, stripeError) -> Void in
            if (stripeError != nil){
                println("there is error");
            }

【问题讨论】:

    标签: ios swift error-handling stripe-payments swift2


    【解决方案1】:

    从您收到的错误消息来看,听起来您正在使用新的 Xcode 7 测试版以及新版本的 Swift。这个新版本最有趣和最有争议的变化之一是 Apple 修改了错误处理的工作方式。实际上,Apple 现在通过 ErrorType 为 Swift 语言添加了一流的异常,并能够在类型级别的函数上进行标记,这些函数可能在执行过程中引发错误。因此,您可以期望开始看到具有以下签名的函数:

    func foo() throws -> Bar 
    

    这表明函数 foo 将抛出异常或返回 Bar 类型的对象。

    您处理此类函数的方式是通过三个新关键字:do、try 和 catch(您可能熟悉许多其他流行语言的 try-catch 习语)。实际上,目的是将可能异常的代码块包装在 do 中,标记对可能抛出异常的函数的特定调用 try,最后,使用 catch 语句指示在发生的情况下应该做什么特定的例外。

    在您的情况下,以下的修改版本应该可以工作:

    do {
        try creditCard.validateCardReturningError()
        STPAPIClient.sharedClient().createTokenWithCard(
                creditCard,
                completion: { (token: STPToken?, stripeError: NSError?) -> Void in 
            self.createBackendChargeWithToken(token!, completion: completion)
        })
    } catch {
        println("There was an error.")
    }
    

    请注意,Stripe 尚未正式发布用于测试版的 iOS SDK 的新版本,因此关于新的异常类型还没有太多,但我会密切关注 Github 存储库以获取任何更新。

    无论如何,有关新的 Swift 错误处理的更多信息,我强烈推荐 Big Nerd Ranch 上的博文:https://www.bignerdranch.com/blog/error-handling-in-swift-2/。如果您有任何其他问题,请告诉我!

    【讨论】:

    • 我会,但我还没有足够的声誉来这样做。问题:您熟悉实现条带吗?
    • :你是对的。我已经做了。关于条带,我能够将条带应用到我正在从事的项目中。但是通过他们的网站实现条带连接对我来说有点难以理解。 stripe.com/docs/connect/managed-accounts@agentcoops
    • @ralph007:Connect 上手肯定有点棘手,尤其是在与 iOS 集成时。如果您有具体问题,请在此处提问,但如果您需要更多关于集成的一般性和对话性帮助,我建议您通过 support.stripe.com/email 联系。
    猜你喜欢
    • 2019-01-02
    • 2018-08-22
    • 2019-02-15
    • 2017-10-26
    • 2020-05-23
    • 2016-12-31
    • 2020-12-13
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多