Stripe iOS SDK - 发送不兼容的块指针类型
Posted
技术标签:
【中文标题】Stripe iOS SDK - 发送不兼容的块指针类型【英文标题】:Stripe iOS SDK - Incompatible block pointer types sending 【发布时间】:2020-07-05 13:57:20 【问题描述】:Stripe SDK 导致构建失败。具体错误是:
发送'__strong STPAPIResponseBlock _Nonnull'的不兼容块指针类型(又名'void (^__strong)(ResponseType _Nullable __strong, NSHTTPURLResponse * _Nullable __strong, NSError * _Nullable __strong)')
到'void (^ _Nonnull)(STPSource * _Nullable __strong, NSHTTPURLResponse * _Nullable __strong, NSError * _Nullable __strong)'类型的参数
它失败的代码是 STPAPIClient.m 中的以下代码...
- (NSURLSessionDataTask *)retrieveSourceWithId:(NSString *)identifier clientSecret:(NSString *)secret responseCompletion:(STPAPIResponseBlock)completion
NSString *endpoint = [NSString stringWithFormat:@"%@/%@", APIEndpointSources, identifier];
NSDictionary *parameters = @@"client_secret": secret;
return [STPAPIRequest<STPSource *> getWithAPIClient:self
endpoint:endpoint
parameters:parameters
deserializer:[STPSource new]
completion:completion];
一切正常 - 然后我相信 Xcode 更新了。现在我遇到了这个问题。我尝试从头开始构建一个新应用程序,除了 Stripe SDK(通过 CocoaPods 安装)之外什么都没有。
在我回滚到早期版本的 Xcode 之前 - 任何帮助将不胜感激。
【问题讨论】:
我应该提到 - 我正在运行 XCode 11.4 并针对 ios 13.4 仅供参考,您可以编辑问题以包含更多信息,而不是添加 cmets。 【参考方案1】:XCode 11.4 破坏了 stripe pod v19.0 并在 v19.0.1 中得到修复
要升级 Stripe pod,请运行 pod update Stripe
【讨论】:
我尝试了你的步骤,但我没有安装 v19.0.1。 @EmreDeğirmenci 新的 pod 版本是 19.0.1,最新的 Stripe 版本是 14.0.1 atm【参考方案2】:修复更新:“我们已经向 Cocoapods 发布了 v14.0.1、v15.0.2、v17.0.3 和 v19.0.1,修复了这个问题。”: https://github.com/stripe/stripe-ios/issues/1525#issuecomment-604037716
旧帖信息:
Stripe 在此更改中修复了此问题:https://github.com/stripe/stripe-ios/pull/1526
如果您被旧版本的 Stripe 卡住了,您可以尝试将这两项更改应用到您的本地版本。 (更改https://github.com/stripe/stripe-ios/pull/1526/files)。
【讨论】:
v14.0.1、v15.0.2、v17.0.3 和 v19.0.1 有什么不同?找不到合适的。 客户端已修复 v11.3.0 ... 决定修补比质疑原因更容易【参考方案3】:我这样做了:
在 Podfile.lock 我已将 - Stripe (19.0.0) 更改为 - Stripe (19.0.1),然后在终端中在 ios 目录下运行 "pod update Stripe"。我正在使用颤振,对我来说它有效。
【讨论】:
【参考方案4】:也遇到了这个问题,但我使用的是 v14 版本的条带吊舱。我能找到的唯一选择是恢复到 xcode 11.3.1。
【讨论】:
您可以将 Stripe pod 版本升级到 14.0.1。他们在该版本中发布了修复程序 刚刚遇到这个问题,当我更新时,我开始在 TPSCardFieldManager.h 的导入中找不到“React/RCTViewManager.h”文件的错误,我尝试的任何方法似乎都无法修复对此,任何帮助将不胜感激。【参考方案5】:您可以将您的 Stripe SDK 设置为版本 19.0.1 来解决此问题。
pod 'Stripe', '~> 19.0.1'
或者通过 pod update 命令将您的条带 pod 更新到最新版本。
【讨论】:
【参考方案6】:我也遇到了这个问题,是 xcode 11.4 更新,我运行的是 stripe v15.0.1。
我刚刚将我的条带版本更新到 v15.0.2。根据您的版本,您可以检查: https://github.com/stripe/stripe-ios/issues/1525#issuecomment-604037716
【讨论】:
【参考方案7】:我在 Pod 文件中将 Stripe SDK 设置为 19.0.1 版本并运行 pod update 命令
【讨论】:
以上是关于Stripe iOS SDK - 发送不兼容的块指针类型的主要内容,如果未能解决你的问题,请参考以下文章
如何在 IOS 中使用 STRIPE API 创建 STRIPE 客户?
iOS - AFNetworking GET 方法中不兼容的块指针类型
不兼容的块指针类型将“int (^)(__strong id, __strong id)”发送到“NSComparator”类型的参数