React native 不是公认的客观 C 方法
Posted
技术标签:
【中文标题】React native 不是公认的客观 C 方法【英文标题】:React native not a recognised objective C method 【发布时间】:2020-07-27 11:30:01 【问题描述】:我正在尝试桥接本机模块的回调以响应本机。我也试过这个Got "is not a recognized Objective-C method" when bridging Swift to React-Native
我也为我的第一个参数添加了下划线
以下是我的快速代码
import Foundation
import LocalAuthentication
@objc(FingerPrintModule)
class FingerPrintModule: NSObject
var resultCallback: RCTResponseSenderBlock!
@objc func authenticateLocallyForios(_ callback: @escaping RCTResponseSenderBlock) -> Void
resultCallback = callback
useLocalAuthentication()
private func useLocalAuthentication()
//Business logic
我也为我的swift
文件创建了objective c
文件
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <UIKit/UIKit.h>
@interface RCT_EXTERN_MODULE(FingerPrintModule, NSObject)
RCT_EXTERN_METHOD(authenticateLocallyForIos: callback:(RCTResponseSenderBlock)callback)
@end
当我从 react native 调用时,我收到错误消息,提示无法识别 objective c
方法
我的 React Native 代码
import NativeModules,
Platform,
from "react-native";
const FingerPrintModule = NativeModules;
在按钮按下时调用
FingerPrintModule.authenticateLocallyForIos((err, result) =>
if (!err)
Alert.alert(result.toString());
else
Alert.alert(err);
);
【问题讨论】:
你能在调用这个方法的地方添加 React 端代码吗? @Daljeet 立即查看 【参考方案1】:在您的反应代码中执行如下操作:
const yourModule = NativeModules.FingerPrintModule;
然后调用如下方法:
yourModule.authenticateLocallyForIos((err, result) =>
if (!err)
Alert.alert(result.toString());
else
Alert.alert(err);
);
【讨论】:
@Dalijeet 我尝试了你的方法并得到同样的错误。实际上我的方法是正确的,因为它适用于 android,但对于 iOS,它会出错。我的swift或objective c文件的方法定义有错误 你可以尝试创建简单的方法 RCT_EXTERN_METHOD(sayHello) 没有任何参数并在其中打印你好【参考方案2】:我必须将我的objective c
代码更改为如下
RCT_EXTERN_METHOD(authenticateLocallyForIos:(RCTResponseSenderBlock)callback)
【讨论】:
以上是关于React native 不是公认的客观 C 方法的主要内容,如果未能解决你的问题,请参考以下文章
react-native 中的 navigator.geolocation.getCurrentPosition 是不是与本地地理定位方法一样准确?
在 React / React Native 中不是父/子的类之间共享和更新变量
scrollToLocatoin 不是函数:react-native-swipe-list-view