Ios &引用;已将无法识别的选择器发送到实例";在react native上设置属性时
我正在尝试将我的Swift视图与我的React本地项目联系起来。我知道了如何显示它,但现在当我尝试设置属性时,出现以下错误消息:Ios &引用;已将无法识别的选择器发送到实例";在react native上设置属性时,ios,swift,reactjs,react-native,Ios,Swift,Reactjs,React Native,我正在尝试将我的Swift视图与我的React本地项目联系起来。我知道了如何显示它,但现在当我尝试设置属性时,出现以下错误消息: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Switch setMessage:]: unrecognized selector sent to instance 0x7f96b270de70' 在我的react本机代码中,我正在执行: cons
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Switch setMessage:]: unrecognized selector sent to instance 0x7f96b270de70'
在我的react本机代码中,我正在执行:
const SwitchNative = requireNativeComponent('Switch', Switch);
class Switch extends Component {
render() {
return (
<SwitchNative message="message will be" style={this.props.style} />
);
}
}
最后我在我的Swift类中有了这个开关。Swift:
...
public func setMessage(message: String) {
NSLog("It's working well");
}
...
不确定它为什么找不到我的
setMessage
函数。React Native正在尝试调用-[Switch setMessage:
,但您已经定义了-[Switch setMessage]
,没有任何参数。将参数添加到Swift方法签名:
public func setMessage(_ message: String)
根据您的Swift版本,您可能还需要使用
@objc
注释您的方法。正确的语法现在在Swift中
@objc(setMessage:)
public func setMessage(message: String) {
NSLog("It's working well");
}
这是对Swift>3.2、Mac High Sierra和React Native>=0.43的更改,因为任何人都可能正在搜索从React Native传递对象数组(我在执行此操作时遇到此问题):
YourView.h
:
@界面视图:RCTView
@属性(非原子,赋值)NSMutableArray*标记;
@结束
YourView.m
:
。。。
RCT_自定义_视图_属性(标记、NSMutableArray、YourView)
{
[查看setMarkers:json];
}
YourView.swift
:
...
public func setMessage(message: String) {
NSLog("It's working well");
}
...
@objc(设置标记:)
public func setMarkers(json:NSMutableArray){
}
啊,实际上我也试过了,但也没用。我编辑了我的问题。我该如何注释?万一有人想知道,@objc(setMessage:)func setMessage(message:String)