ios - 线程 1 : SIGABRT when using pushPaymentMethodsViewController() from Stripe

标签 ios swift xcode stripe-payments

我正在尝试从我的 ios 应用程序中推送 Swift PaymentMethodsViewController()。 Swift 文档建议使用以下代码执行此操作:

self.paymentContext.pushPaymentMethodsViewController()

当我运行这段代码时,我得到:

Thread 1: signal SIGABRT

通常这意味着 Storyboard 中的设置不正确。我已经测试过删除 pushPaymentMethodsViewController() 行以确保我没有遇到旧连接问题,并且没有收到任何错误,这让我认为问题与行直接相关:

self.paymentContext.pushPaymentMethodsViewController()

我正在为这个应用程序使用 Storyboard。我是否必须在 Storyboard 中进行任何设置才能使其正常工作?我认为我的委托(delegate)功能设置正确。关于如何解决这个问题的任何想法?尝试清理并重新运行,但没有成功。

这是调试器的完整输出。我没有发现它特别有用,但在评论中要求它:

libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x0000000110cfbb6e libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x0000000110d35080 libsystem_pthread.dylib`pthread_kill + 333
    frame #2: 0x0000000110956c97 libsystem_c.dylib`abort + 127
    frame #3: 0x00000001106e4e6f libc++abi.dylib`abort_message + 245
    frame #4: 0x00000001106e500b libc++abi.dylib`default_terminate_handler() + 265
    frame #5: 0x000000010b71f2ae libobjc.A.dylib`_objc_terminate() + 97
    frame #6: 0x00000001107020ae libc++abi.dylib`std::__terminate(void (*)()) + 8
    frame #7: 0x0000000110701d56 libc++abi.dylib`__cxa_rethrow + 99
    frame #8: 0x000000010b71f1cc libobjc.A.dylib`objc_exception_rethrow + 40
    frame #9: 0x000000010f6d3399 CoreFoundation`CFRunLoopRunSpecific + 777
    frame #10: 0x00000001147baa73 GraphicsServices`GSEventRunModal + 62
    frame #11: 0x000000010c242057 UIKit`UIApplicationMain + 159
  * frame #12: 0x000000010aaa06c7 Spotbirdparking`main at AppDelegate.swift:14
    frame #13: 0x0000000110884955 libdyld.dylib`start + 1
    frame #14: 0x0000000110884955 libdyld.dylib`start + 1
(lldb) 

最佳答案

SIGABRT 是否在调用 pushPaymentMethodsViewController() 后立即触发?

如果可以,您可以在您调用的 View Controller 中检查一下:

self.paymentContext.pushPaymentMethodsViewController()

hostViewController property在您的 paymentContext 实例上正确设置如下(在您创建 paymentContext 实例之后):

self.paymentContext.hostViewController = self

如果这没有帮助,我建议设置一个断点,您可以在调用 pushPaymentMethodsViewController() 的地方设置一个断点,然后介入调用以检查失败的确切位置。

关于ios - 线程 1 : SIGABRT when using pushPaymentMethodsViewController() from Stripe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236868/

相关文章:

ios - 在 CollectionView 标题单元格中访问 SearchBar - Swift

swift - 为什么 Dictionary.map 返回一个元组数组,它​​在哪里记录?

ios - 在 Xcode 中比通常的编译时间更长

xcode - 如何在 Xcode 中禁用一个文件的优化

swift - 从 Xcode 调用 C 库函数

ios - CAFilter 仍然是私有(private) API 吗?

ios - UINavigationController pushViewController 在中途暂停/卡住

ios - Remote Config A/B Test 不在 iOS 上提供结果

ios - 如何在 Firestore 中删除 int、double、float 的可选值?

iphone - 如何让 UICollectionViewFlowLayout 的单元格跨越多行?