gpt4 book ai didi

ios - 方法不是公认的客观 c 方法

转载 作者:行者123 更新时间:2023-12-01 16:12:27 24 4
gpt4 key购买 nike

很多问题都被问到同样的问题,但没有一个能解决我的错误。

这是我的 objective-c 文件

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <UIKit/UIKit.h>

@interface RCT_EXTERN_MODULE(LanguageTranslationModule, NSObject)


RCT_EXTERN_METHOD(callbackMethod:(NSString*)englishText (RCTResponseSenderBlock)callback)

@end

这是我的快速类(class)
@objc(LanguageTranslationModule)
class LanguageTranslationModule: NSObject {

var resultCallback: RCTResponseSenderBlock!

@objc func callbackMethod(_ englishText: String, callback: @escaping RCTResponseSenderBlock) -> Void {
resultCallback = callback
debugPrint("Hi there")
translateText(msg: englishText)
}...

这是我来自 React Native 的 JS 调用
LanguageTranslationModule.callbackMethod(englishText, (err, r) => {
if (!err) {
setProgress(false);
setMarathiText(r.text.toString());
} else {
setProgress(false);
setMarathiText(err);
}
});

以下是我的翻译文本方法
func translateText(msg: String) {

let options = TranslatorOptions(sourceLanguage: .en, targetLanguage: .mr)
let englishMarathiTranslator = NaturalLanguage.naturalLanguage().translator(options: options)

let conditions = ModelDownloadConditions(
allowsCellularAccess: false,
allowsBackgroundDownloading: true
)

englishMarathiTranslator.downloadModelIfNeeded(with: conditions) {error in
guard error == nil else { return }
englishMarathiTranslator.translate(msg) { (translatedText, error) in
guard error == nil, let translatedText = translatedText else { return }
let resultsDict = [
"text" : translatedText
];
self.resultCallback([NSNull() ,resultsDict])
}
}
}

已在 swift 文件中的第一个参数中添加了下划线,因为这是对堆栈上提出的其他问题的大部分解决方案,并且下划线和实际变量名之间有空格。如果我从所有文件中删除 englishText 变量并将该文本硬编码到 swift 文件中,那么我的函数可以正常工作。当然,我必须在回调变量中添加下划线,所以我这边没有逻辑错误

最佳答案

我认为错误出现在问题的标题中。您的 Swift 方法的签名似乎与 Objective C 接口(interface)中声明的签名不匹配。

尝试将参数标签添加到声明中的第二个参数。

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <UIKit/UIKit.h>

@interface RCT_EXTERN_MODULE(LanguageTranslationModule, NSObject)


RCT_EXTERN_METHOD(callbackMethod:(NSString*)englishText callback:(RCTResponseSenderBlock)callback)
// ^^^^^^^^

@end

解释:
RCT_EXTERN_METHOD(callbackMethod:(NSString*)englishText callback:(RCTResponseSenderBlock)callback)

火柴
@objc func callbackMethod(_ englishText: String, callback: @escaping RCTResponseSenderBlock) -> Void

而您的原始变体
RCT_EXTERN_METHOD(callbackMethod:(NSString*)englishText (RCTResponseSenderBlock)callback)

会匹配
@objc func callbackMethod(_ englishText: String, _ callback: @escaping RCTResponseSenderBlock) -> Void

关于ios - 方法不是公认的客观 c 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427809/

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