使用RCT_REMAP_METHOD宏从Objective-C到Swift的桥接方法,xcode抱怨:缺少@end

Bra*_*ets 5 objective-c ios swift react-native react-native-ios

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

我正在尝试从https://facebook.github.io/react-native/docs/native-modules-ios.html回调和Promise示例,同时也从目标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
Run Code Online (Sandbox Code Playgroud)

然后,我在.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....
}
Run Code Online (Sandbox Code Playgroud)

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