我正在尝试从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)
答案 0 :(得分:1)
在SIGABRT
被调用之后,pushPaymentMethodsViewController()
是否立即被触发?
如果可以的话,请在要调用的View Controller中进行检查:
self.paymentContext.pushPaymentMethodsViewController()
paymentContext
实例上的hostViewController
property的设置正确(在创建您的PaymentContext实例之后):
self.paymentContext.hostViewController = self
如果这没有帮助,我建议您在呼叫pushPaymentMethodsViewController()
的地方设置一个断点,然后介入该呼叫以检查失败的确切位置。