iOS集成Stripe时Xcode报Cannot find 'pay' in scope错误如何解决
错误原因
你在setupPayButton方法中为按钮绑定点击事件时,通过#selector(pay)指定了触发名为pay的方法,但你的ViewController类中并未实现该方法,编译器无法找到对应方法的定义,因此抛出该错误。
解决方案
在ViewController类的作用域内添加带@objc修饰的pay方法即可,Swift中通过#selector调用的方法必须添加@objc前缀以暴露给Objective-C运行时。
你可以参考以下基础实现模板,根据自身的Stripe支付逻辑调整内部代码:
@objc func pay() { // 校验卡片输入有效性 guard let cardParams = paymentTextField.cardParams else { diplayStatus("请输入有效的银行卡信息") return } startLoading() // 调用Stripe接口创建支付方式 STPAPIClient.shared.createPaymentMethod(with: cardParams) { [weak self] paymentMethod, error in guard let self = self else { return } self.stopLoading() if let error = error { self.diplayStatus("支付方式创建失败:\(error.localizedDescription)") return } guard let paymentMethod = paymentMethod else { self.diplayStatus("获取支付信息失败,请重试") return } // 此处添加调用自有后端接口完成支付的逻辑 self.diplayStatus("支付方式创建成功,ID:\(paymentMethod.stripeId)") } }
将上述代码添加到你的ViewController类中(比如放在diplayStatus方法之后即可),错误就会消失。
内容的提问来源于stack exchange,提问作者askit
相关产品推荐
相关产品推荐

