8

一旦我RCT_REMAP_METHOD(findEvents2, resolver:(RCTPromiseResolveBlock)resolve rejector:(RCTPromiseRejectBlock)reject)在界面内添加了 .m 文件,Xcode 就开始抱怨缺少 @end。

我正在尝试来自https://facebook.github.io/react-native/docs/native-modules-ios.html的回调和承诺示例,同时还从 Objective C 桥接到 Swift。带有回调的 findEvents1 对我有用,但我无法让带有 Promise 的 findEvents2 工作。

我在 .m 文件中添加了带有宏的方法定义:

#import "RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(EventManager, NSObject)

RCT_EXTERN_METHOD(findEvents1: (RCTResponseSenderBlock)callback)
RCT_REMAP_METHOD(findEvents2, resolver:(RCTPromiseResolveBlock)resolve rejector:(RCTPromiseRejectBlock)reject)

@end

然后我在 .swift 文件中实现了该方法:

@objc(EventManager)
class EventManager: NSObject {
    func findEvents1(callback: (NSObject) -> () ) -> Void {
        EventRequest(completion: EventRequest.CompletionHandler (
            success: { (events) in
                callback([events])
            }, failure: { (error) in
                callback([(error?.localizedDescription)!])
            }, cancel: nil)
        ).dispatch()
    }

    func findEvent2....
}

我不完全理解 RCT_REMAP_METHOD 宏是如何工作的,我不明白为什么 findEvent1 有效但 findEvent2 没有。有人可以建议如何桥接这种方法吗?

4

0 回答 0