我试图将base64图像字符串发送给Swift,并希望在回调中返回图像的分类。然而,我可以单独传递字符串和回调,但是当我将它们合并在一起时,我收到以下错误:
Exception 'bothClassifyAndCallback: is not a recognized Objective-C method.
这是我的bridge.m文件 - 注意,方法classify和myCallback都很好地发挥作用
#import "React/RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE( ImageClassifier, NSObject )
RCT_EXTERN_METHOD( classify: (NSString*)img )
RCT_EXTERN_METHOD( myCallback: (RCTResponseSenderBlock)callback )
RCT_EXTERN_METHOD( bothClassifyAndCallback: (NSString*)img (RCTResponseSenderBlock)callback)
@end
这是我的bridge.swift文件
import Foundation
@objc( ImageClassifier )
class ImageClassifier: NSObject {
@objc
func classify( _ img: String ) {
print( img )
}
@objc
func myCallback( _ callback: RCTResponseSenderBlock ) {
callback([ "From swift to js" ])
}
@objc
func bothClassifyAndCallback( _ img: String, _ callback: RCTResponseSenderBlock ) {
print( img )
return callback( [ "recieving and returning to js" ] )
}
@objc
static func requiresMainQueueSetup() -> Bool {
return true
}
}
这是我的React Native调用:
class BridgeTest extends React.Component {
constructor(){
super()
this.classifier = NativeModules.ImageClassifier
}
onPress = () => {
this.classifier.classify( "from js" ) // this works
this.classifier.myCallback( ( arg ) => { console.log( "my arg is" + arg ) } ) // This works
this.classifier.bothClassifyAndCallback( "argument", ( arg ) => { console.log( "my arg is " + arg ) })
}
render() {
return( <Button title="bridge" onPress={this.onPress}></Button> )
}
export default BridgeTest
}
我怀疑我在这里是错误的:
RCT_EXTERN_METHOD( bothClassifyAndCallback: (NSString*)img (RCTResponseSenderBlock)callback)
但是,尝试几种不同的变体后,我仍然无法使其正常工作。谢谢。