Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将带有Objective-C的React本机应用程序转换为Swift时,出现RCT_EXTERN_方法问题_Objective C_Swift_React Native - Fatal编程技术网

将带有Objective-C的React本机应用程序转换为Swift时,出现RCT_EXTERN_方法问题

将带有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

我们有一个使用Objective-C编写的现有React本机应用程序。我的任务是将Objective-C语法转换为Swift

这项工作的一部分是确保React本地桥封装在一个地方,并在Swift“Manager”类中引用外部方法

以前,我们有一个名为“CameraManager”的文件,该文件公开给React Native,并具有以下方法:

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)