Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios &引用;已将无法识别的选择器发送到实例";在react native上设置属性时_Ios_Swift_Reactjs_React Native - Fatal编程技术网

Ios &引用;已将无法识别的选择器发送到实例";在react native上设置属性时

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

我正在尝试将我的Swift视图与我的React本地项目联系起来。我知道了如何显示它,但现在当我尝试设置属性时,出现以下错误消息:

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)