线程1:从Stripe使用pushPaymentMethodsViewController()时的SIGABRT

时间:2018-07-09 00:05:11

标签: ios swift xcode stripe-payments

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

self.paymentContext.pushPaymentMethodsViewController()

运行此代码时,我得到:

Thread 1: signal SIGABRT

通常,这意味着故事板上的内容未正确设置。我已经测试过删除pushPaymentMethodsViewController()的行,以确保我没有遇到旧连接的问题,并且没有收到任何错误,这使我认为问题与该行直接相关:

self.paymentContext.pushPaymentMethodsViewController()

我正在为此应用程序使用故事板。我必须在情节提要中进行任何设置才能使其正常工作吗?我认为我的委托函数设置正确。有关如何解决此问题的任何想法?尝试清洁和重新运行,没有运气。

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

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) 

1 个答案:

答案 0 :(得分:1)

SIGABRT被调用之后,pushPaymentMethodsViewController()是否立即被触发?

如果可以的话,请在要调用的View Controller中进行检查:

self.paymentContext.pushPaymentMethodsViewController()

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

self.paymentContext.hostViewController = self

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