将带有Objective-C的React本机应用程序转换为Swift时,出现RCT_EXTERN_方法问题
我们有一个使用Objective-C编写的现有React本机应用程序。我的任务是将Objective-C语法转换为Swift 这项工作的一部分是确保React本地桥封装在一个地方,并在Swift“Manager”类中引用外部方法 以前,我们有一个名为“CameraManager”的文件,该文件公开给React Native,并具有以下方法:将带有Objective-C的React本机应用程序转换为Swift时,出现RCT_EXTERN_方法问题,objective-c,swift,react-native,Objective C,Swift,React Native,我们有一个使用Objective-C编写的现有React本机应用程序。我的任务是将Objective-C语法转换为Swift 这项工作的一部分是确保React本地桥封装在一个地方,并在Swift“Manager”类中引用外部方法 以前,我们有一个名为“CameraManager”的文件,该文件公开给React Native,并具有以下方法: RCT_REMAP_方法(拍摄照片,图像保存:(rctpromisersolveblock)解析失败的保存图像:(rctpromiserselveblock
RCT_REMAP_方法(拍摄照片,图像保存:(rctpromisersolveblock)解析失败的保存图像:(rctpromiserselveblock)拒绝){…}
我想把它转换成
@接口RCT\u外部模块(CameraViewManager,NSObject)
RCT_外部方法(拍摄图片:图像保存:(RCTPromiseResolveBlock*)解析失败保存图像:(RCTPromiseRejectBlock*)拒绝)
@结束
这可以很好地编译,但是当在应用程序中调用takePicture
时,会引发以下异常
异常:“takePicture::failedSavingImage:不是可识别的Objective-C方法”。在使用参数(…)调用目标CameraViewManager上的takePicture时引发
在我的CameraViewManager.swift
文件中,我有以下内容:
@objc
func takePicture(imageSaved解析:@escaping RCTPromiseResolveBlock,failedSavingImage拒绝:RCTPromiseRejectBlock)->Void{…}
我对React Native的总体熟悉程度仍然不太理想,因此我不确定要满足这一点需要做些什么
有什么想法吗?所以问题是,尽管使用
imageSaved
参数名公开了该方法,但它并没有寻找该名称。它在寻找
@objc
func takePicture(_ resolve: @escaping RCTPromiseResolveBlock, failedSavingImage reject: RCTPromiseRejectBlock) -> Void { ... }
我还将桥中的导出更改为:
RCT_EXTERN_METHOD(takePicture: (RCTPromiseResolveBlock *)resolve failedSavingImage:(RCTPromiseRejectBlock *)reject)