React Native Swift模块中的回调函数

时间:2017-08-28 02:25:28

标签: javascript objective-c swift react-native bridging-header

我正在尝试使用我可以在我的javascript代码中调用的函数创建一个本机swift模块。目前,我有module.swift文件,我的module.m文件和桥接标题。

这是MyModule.swift:

import Foundation

@objc(MyModule)
class MyModule: NSObject {

  @objc func callbackMethod(callback: RCTResponseSenderBlock) -> Void {
     let resultsDict = [
     "success" : true
     ];

    callback([NSNull() ,resultsDict])
  }

}

这是MyModule.m:

#import <Foundation/Foundation.h>

// CalendarManagerBridge.m
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>

@interface RCT_EXTERN_MODULE(MyModule, NSObject)

RCT_EXTERN_METHOD(callbackMethod:(RCTResponseSenderBlock)callback)

@end

这是桥接标题:

#import React/RCTBridgeModule.h

#import React/RCTEventEmitter.h

最后,这是我在javascript中的调用:

const { MyModule } = require('NativeModules');
MyModule.callbackMethod((err,r) => console.log(r));

问题是每当我运行项目时,都会导致错误:

Exception 'callbackMethod:(RCTResponseSenderBlock)callback is not a recognized Objective-c
 method.' 

但是,我发现文档没有任何问题。有人可以提供一些帮助吗?

1 个答案:

答案 0 :(得分:3)

出于某种原因,我们现在需要以不同的方式编写@objc部分。

更改

@objc func callbackMethod(callback: RCTResponseSenderBlock) -> Void {
 let resultsDict = [
 "success" : true
 ];

callback([NSNull() ,resultsDict])

@objc(callbackMethod:)
func callbackMethod(callback: RCTResponseSenderBlock) -> Void {
 let resultsDict = [
 "success" : true
 ];

callback([NSNull() ,resultsDict])