2017-08-29 52 views
0

我想創建一個本機swift模塊,我可以在我的JavaScript代碼中調用該函數。目前我有我的module.swift文件,我的module.m文件和橋接頭。反應本機Swift中的回調函數

這裏的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 

@objc(AskPermissions) 
class AskPermissions: NSObject { 

    @objc func callbackMethod(callback: RCTResponseSenderBlock) -> Void { 
    let resultsDict = [ 
    "success" : true 
    ]; 
    print("GLARGH!") 
    callback([NSNull() ,resultsDict]) 
    } 

} 

這裏的橋接報:

#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

我不是原生代碼,很好,但是這是可能的,因爲你是混合Objective-C和迅速? – bennygenel

+0

試着改變你的 「MyModule.m」 到 '#進口<反應,和/ RCTBridgeModule.h> @interface RCT_EXTERN_MODULE(MyModule的,NSObject的) RCT_EXTERN_METHOD(callbackMethod:(RCTResponseSenderBlock)回調) @ end' – PTT

回答

0

嘗試添加下劃線: callbackMethod(_ callback: RCTResponseSenderBlock)

+0

你精彩人 – newguy222