我正在try 将我的React原生0.33代码连接到一个超级简单的Swift方法,在this guide之后,但我得到的只是show:(NSString *)name is not a recognized Objective-C method.

这是我的代码:

switch 经理.敏捷的

import Foundation

@objc(SwitchManager)
class SwitchManager: NSObject {

  @objc func show(name: String) -> Void {
    NSLog("%@", name);
  }

}

切换管理器桥.H

#import "RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(SwitchManager, NSObject)

RCT_EXTERN_METHOD(show:(NSString *)name)

@end

SwitchManager桥接头.H

#import "RCTBridgeModule.h"

然后在我的index.ios.js文件中,我用import { SwitchManager } from 'NativeModules';导入SwitchManager并拨打SwitchManager.show('One');.这就是错误发生的地方.

不知道怎么了.

推荐答案

这是Swift 3更改的一部分,可以通过添加下划线来解决:

import Foundation

@objc(SwitchManager)
class SwitchManager: NSObject {

  @objc func show(_ name: String) {
    NSLog("%@", name);
  }

}

参见Swift 3的0046 Proposal: Establish consistent label behavior across all parameters including first labels,在Swift.org migration guide中的"一致的第一个参数标签"下.

基本上,Objective-C对Swift方法的看法在Swift 3中发生了变化.

EDIT: This is still the case in Swift 4, 100.

Reactjs相关问答推荐

Reactjs中的chartjs和reaction-chartjs-2的问题

在Reaction中更新状态时,我将变得未定义

有没有一种惯用的方式来接受特定的子元素?

使用`Link`包装`tr`标记会在Next.js中产生水合错误14

不同步渲染

我在Route组件上使用元素属性,这样就不需要ID了吗?

如何优化 React 应用程序的性能?

React中的功能性组件克隆优化

无法读取未定义的属性(读取值)...TypeError:无法读取未定义的属性(读取值)

改变输入的默认值时出现问题:number react-hook-form

如何在 React Native 中更新跨屏幕呈现的上下文状态变量?

NextJS htaccess 设置

docker:来 automorphic 护进程的错误响应:未指定命令.的原因是什么?

无法读取未定义的react native 的属性参数

响应式媒体 React Tailwind

错误:无效挂钩调用.钩子只能在函数组件的主体内部调用.使用 next/router 时

如何定制 React 热 toastr ?

无法重用我的组件,它只显示 1 次

当父组件重新渲染时做出react ,我失go 了子状态.我错过了什么?

useEffect 仅在跟随链接后有效,不适用于直接链接