Собственные модули ReactNative Promise и в Swift
Я пытаюсь запустить обещание в React Native, используя Swift и передавая одно поле (массив). Это код, который у меня есть:
GuidedTourInterfaceBridge.m
@interface RCT_EXTERN_MODULE(GuidedTourInterface, NSObject)
RCT_EXTERN_METHOD(readFile(_ arr: NSArray, resolver: RCTPromiseResolveBlock resolve, rejecter reject: RCTPromiseRejectBlock reject))
@end
GuidedTourInterface.swift:
...
@objc
func readFile(_ arr: NSArray, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
...
resolve(["success" : true, "base64Content" : base64Content ])
}
...
Файл JS:
...
readFileInfoJson = async () => {
try {
var result = await guidedTourInterface.readFile([this.props.mapToShow+"/info.json"]);
...
} catch (e) {
console.error(e);
}
}
Я получаю сообщение об ошибке:
guidedTourInterface.readFile не является функцией. (В 'guidedTourInterface.readFile([_this.props.mapToShow+"/info.json"])', guidedTourInterface.readFile'не определено)]
У вас есть какие-либо предложения, как решить эту проблему или что я делаю неправильно? заранее спасибо
1 ответ
Решение
Я смог выяснить, как решить проблему. Вот решение для тех, кто может нуждаться
GuidedTourInterfaceBridge.m
RCT_EXTERN_METHOD(readFile:(NSArray *)arr resolve:(RCTPromiseResolveBlock *)resolve reject:(RCTPromiseRejectBlock *)reject)
GuidedTourInterface.swift:
func readFile(_ arr: NSArray, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
Файл JS:
var result = await guidedTourInterface.readFile([this.props.mapToShow+"/info.json"])
.then((result) => {