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不兼容的块指针类型问题

如何在 IOS 中使用 STRIPE API 创建 STRIPE 客户?

iOS - AFNetworking GET 方法中不兼容的块指针类型

不兼容的块指针类型将“int (^)(__strong id, __strong id)”发送到“NSComparator”类型的参数

Xcode 7 - 不兼容的块指针类型