首页 > 解决方案 > 将 react-native 应用程序作为另一个应用程序中的视图控制器运行时发送到类的无法识别的选择器

问题描述

我们有一个 react-native 应用程序,我们将其作为独立应用程序开发,然后我们有一个 pod,它使用本机入口点导出应用程序。react-native-awesome-card-io当我们将应用程序作为独立部分(metro bundler)运行时,我们应用程序的一部分使用效果很好。我们使用可可豆荚来管理 react-native 链接通常为我们做的依赖。我们正在使用react-native: 57.8但必须升级到59.0才能将我们的插件集成到 android 应用程序中,而无需添加 32/64 位过滤。无论如何,我们有一个示例应用程序,它只有一个按钮,当按下按钮时,该操作将采用我们创建的视图控制器presentModalViewController并被触发。升级 react-native 后出现的问题,当我们scanCard在 react-native js 中调用 press 函数时,出现以下错误

它以前运行良好,如果我们将应用程序作为独立的 react-native 应用程序运行,它可以工作,但是当我们集成它时,问题就出现了。这是我们如何instantiate使用 react-native 插件。

注意:我们的 Objective-c 和 swift 示例消费者应用程序都失败了。我没有在网上找到任何东西。

我们如何在示例应用程序中加载视图控制器

- (IBAction)launchPaciolanSDKAction:(UIButton *)sender {
printf("Launching PaciolanSDK ...");
UIViewController *viewController = nil;
viewController = [[PaciolanSDKViewController alloc] initWithString::""];
[self presentModalViewController:viewController animated:YES];

}

错误:

Exception 'Please add -ObjC to 'Other Linker Flags' in your project settings. (+[NSObject testForObjCLinkerFlag]: unrecognized selector sent to class 0x1dbbd7eb0)' was thrown while invoking scanCard on target CardIOModule with params (
        {
        hideCardIOLogo = 1;
        requireCardholderName = 1;
        suppressManualEntry = 1;
        usePaypalActionbarIcon = 0;
    },
    3544,
    3545
)
callstack: (
    0   CoreFoundation                      0x00000001a1cf5ebc <redacted> + 252
    1   libobjc.A.dylib                     0x00000001a0ec5a50 objc_exception_throw + 56
    2   CoreFoundation                      0x00000001a1bfc484 <redacted> + 0
    3   RNAwesomeCardIO                     0x000000010385bf6c -[CardIOPaymentViewController initWithPaymentDelegate:scanningEnabled:] + 660
    4   RNAwesomeCardIO                     0x00000001038598bc -[RCTCardIOModule scanCard:resolver:rejecter:] + 236
    5   CoreFoundation                      0x00000001a1cfd610 <redacted> + 144
    6   CoreFoundation                      0x00000001a1bdb340 <redacted> + 292
    7   CoreFoundation                      0x00000001a1bdbf24 <redacted> + 60
    8   React                               0x0000000103ec3d10 -[RCTModuleMethod invokeWithBridge:module:arguments:] + 2064
    9   React                               0x0000000103ecfe2c _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicE + 664
    10  React                               0x0000000103ecf99c _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 144
    11  React                               0x0000000103ecf900 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 28
    12  libdispatch.dylib                   0x000000010494f824 _dispatch_call_block_and_release + 24
    13  libdispatch.dylib                   0x0000000104950dc8 _dispatch_client_callout + 16
    14  libdispatch.dylib                   0x000000010495ea78 _dispatch_main_queue_callback_4CF + 1360
    15  CoreFoundation                      0x00000001a1c85ce4 <redacted> + 12
    16  CoreFoundation                      0x00000001a1c80bac <redacted> + 1964
    17  CoreFoundation                      0x00000001a1c800e0 CFRunLoopRunSpecific + 436
    18  GraphicsServices                    0x00000001a3ef9584 GSEventRunModal + 100
    19  UIKitCore                           0x00000001cefe0c00 UIApplicationMain + 212
    20  sample                              0x0000000102f0e1fc main + 124
    21  libdyld.dylib                       0x00000001a173ebb4 <redacted> + 4
)

标签: objective-cswiftreact-native

解决方案


检查您发送到 api 的参数和标头。此错误主要发生在我们发送错误的参数时。


推荐阅读