一旦我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 没有。有人可以建议如何桥接这种方法吗?