我正在尝试使用swift在我的iOS应用中实现Stripe,并且正在努力编写createCharge
函数。
Stripe提供了一些样板代码,其中包括对我必须实现的createCharge
方法的调用。我尝试创建此方法,但是无法获取方法签名以将调用与该方法匹配。我是新手,并不完全了解闭包,我认为这是造成问题的原因。
有人可以帮我写一个方法签名,使其遵循下面的调用代码吗?
我试图通过更改操作数的数据类型来更改方法签名。我还尝试将一个附加参数插入方法调用中(因为这是错误消息建议执行的操作),但我不知道该附加参数应该是什么。
下面是在StripeAPIClient.swift
类中编写的方法签名:
func createCharge(paymentResult: String, completion: @escaping STPJSONResponseCompletionBlock) { // ...
下面是对SelectedMenuItem.swift
类中编写的方法的调用:
let stripeApiClient = StripeAPIClient()
func paymentContext(_ paymentContext: STPPaymentContext, didCreatePaymentResult paymentResult: STPPaymentResult, completion: @escaping STPErrorBlock) {
// error occurs on this line
stripeApiClient.createCharge(paymentResult: paymentResult.source.stripeID, completion: { (error: Error?) in
if let error = error {
completion(error)
} else {
completion(nil)
}
})
}
当我调用该函数时,收到一条意外的错误消息:
上下文闭包类型
'([AnyHashable : Any]?, Error?) -> Void'
需要2个参数,但闭包主体中使用了1个