Много вопросов задается относительно того же, но ни один из них не решает мою ошибку.
Вот моя цель c file
#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
Вот мой быстрый класс
@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)
}...
Вот мой JS вызов из React Native
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, то моя функция работает нормально. тогда, конечно, мне пришлось добавить подчеркивание в переменную обратного вызова, поэтому никакой логической ошибки с моей стороны