2017-08-29 46 views
1

我正在尝试使用我可以在我的JavaScript代码中调用的函数创建本机swift模块。目前我有我的module.swift文件,我的module.m文件和桥接头。Swift React本机回调模块

这里的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.' 

但是,我找不到任何错误的文档。有人可以提供一些帮助吗?

回答

0

尝试在快捷方法的第一个参数前添加一个_

import Foundation 

@objc(MyModule) 
class MyModule: NSObject { 

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

    callback([NSNull() ,resultsDict]) 
    } 

} 
相关问题