gpt4 book ai didi

ios - React Native 到 Swift 桥 - 传递参数和回调

转载 作者:行者123 更新时间:2023-12-04 17:25:34 25 4
gpt4 key购买 nike

我正在尝试将 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)

但在尝试了几种变体之后,我就是无法让它工作。谢谢。

最佳答案

你需要对 bothClassifyAndCallback 做些许修改ImageClassifierbridge.m 用于 @objc 声明。

ImageClassifier

@objc(bothClassifyAndCallback: resolver:) 

func bothClassifyAndCallback( _ img: String, resolver callback: RCTResponseSenderBlock ) {
print( img )
return callback( [ "recieving and returning to js" ] )

}

Bridge.m

RCT_EXTERN_METHOD( bothClassifyAndCallback: (NSString*)img resolver: (RCTResponseSenderBlock)callback)

关于ios - React Native 到 Swift 桥 - 传递参数和回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63731122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com