当前位置: 首页 > 面试题库 >

将Swift桥接到React-Native时,“不是公认的Objective-C方法”

唐彦
2023-03-14
问题内容

我正在按照本指南将我的React-Native 0.33代码桥接到一个超级简单的Swift方法,但我得到的只是show:(NSString *)name is not a recognized Objective-C method

这是我的代码:

SwitchManager.swift

import Foundation

@objc(SwitchManager)
class SwitchManager: NSObject {

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

}

SwitchManagerBridge.h

#import "RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(SwitchManager, NSObject)

RCT_EXTERN_METHOD(show:(NSString *)name)

@end

SwitchManager-Bridging-Header.h

#import "RCTBridgeModule.h"

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

不知道怎么了。


问题答案:

我整天都在为这个问题而战。通过将Swift编译器设置为使用旧版版本来解决(XCode 8首选Swift 3),因此在:

构建设置 >向下滚动到“ 使用旧版Swift语言版本 ”设置为“ 是”



 类似资料:
  • 问题内容: 我得到了一个迅速的项目,并使用CocoaPod导入了第三方存储库。在我使用的pod文件中,因此存储库将内置到框架中以供使用。然后将ObjC框架导入或导入到我的桥接头中。 在这种情况下,我运行该项目,它可以正常工作。但是当我存档时,在桥接头文件中找到“找不到文件”。 和 我该如何解决这个问题? 问题答案: 我的解决方案是: 不要在桥接头文件中导入ObjC框架,而只是在需要该框架的文件中导

  • 问题内容: 我有这段代码可创建视图并对其应用渐变。 Xcode没有给我任何编译错误,但是代码崩溃了 与消息 数组元素不能桥接到Objective-C 实际上,我原以为它会在那里崩溃,因为我不确定如何在Swift上创建CGColors数组。令人惊讶的是Xcode提到了Objective-C。在我看来,我正在迅速创建CGColorRef … 有什么线索吗?为什么提到Objective-C,我该如何解决

  • 问题内容: Xcode更新后,我遇到了一个奇怪的问题。在我的应用程序中,当我从API获得响应时,我会手动解析它并将其映射到我的模型。我的代码中有很多地方使用空合并将JSON值转换为如下所示: 它过去可以正常工作,但是在更新后,它始终默认为0。为了确定原因,我尝试强制将其强制转换为如下所示 这导致以下错误 无法将NSNumber桥接到Float 经过进一步调查,我发现Xcode使用的是Swift 3

  • 问题内容: 我有一个Swift项目,我想在其中将方法附加到UIButton的tap事件。我有以下代码: XCode突出显示了我的说法,并说: 如果我按我的建议添加前缀,则说明一切正常。 我的构建设置中是否启用了某些导致这种奇怪行为的功能? PS。我在7.3.1中得到了这种行为。但是,如果我在7.2.1中尝试此方法,则它不接受语法,并且工作正常。 问题答案: 选择器是Objective-C的功能,只

  • 问题内容: 新的Xcode 7.3通过addTarget传递参数通常对我有用,但在这种情况下,它会在标题中引发错误。有任何想法吗?当我尝试将其更改为@objc时,它将引发另一个 谢谢! 它正在调用的选择器 问题答案: 就我而言,选择器的功能是。一旦我删除错误消失了。同样适用。 在Swift 4中, 您将需要添加到函数声明中。直到快速4,这是隐式推断。

  • 问题内容: 在Objective-C中,有一个称为的类方法,该方法在首次加载类时被调用。Swift中的等效项是什么? 问题答案: 在Swift 1.2之前: 编辑: 从Swift 1.2开始,您将无法再覆盖该方法。相反,查看该方法,它的行为与加载不同,它是在类第一次在某处而不是在应用程序初始加载时被调用的