【发布时间】:2018-05-18 00:19:50
【问题描述】:
假设我有以下 Swift 类:
@objc(ExampleClass)
class ExampleClass: NSObject {
init() {}
@objc func exampleMethod(_ message: String, _ properties: [String: Any]? = nil) -> Void {}
}
还有下面的Header:
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
@interface RCT_EXTERN_MODULE(ExampleClass, NSObject)
RCT_EXTERN_METHOD(exampleMethod:(NSString *)name (NSDictionary *)properties)
@end
然后我使用以下 React Native 代码调用:
import { NativeModules } from 'react-native'
NativeModules.ExampleClass.exampleMethod('example', {'hello': 'world'})
这会导致以下错误消息:
ExceptionsManager.js:73 Exception 'exampleMethod: is not a recognized Objective-C method.' was thrown while invoking trackEvent on target SegmentTracker with params (
"example",
{
hello = world;
}
)
虽然这样称呼它:
NativeModules.ExampleClass.exampleMethod('example')
结果:
ExceptionsManager.js:73 Exception 'exampleMethod: is not a recognized Objective-C method.' was thrown while invoking trackEvent on target SegmentTracker with params (
"example"
)
我有两个问题: 1) 如何将 JSON 从 React Native 传递给 Swift? 2) 如何正确允许 RCT_EXTERN_METHOD 中的可选参数?如果这不可能,我该如何处理我有时想传递第二个参数,有时又不想传递的情况?
【问题讨论】:
标签: objective-c json swift react-native optional