将 Swift 类导入 React Native 模块中的 Obj-C



我正在为反应原生模块开发一个新功能(https://github.com/blackuy/react-native-twilio-video-webrtc),问题是它是用Objective-C开发的,我需要导入一个新的Swift类。

到目前为止我做了什么:

  1. 使用包的名称导入它,在本例中#import <RNTwilioVideoWebRTC/RNTwilioVideoWebRTC-Swift.h>
  2. 确保"预编译桥接标头"设置为"是
  3. "
  4. Objective-C Generated Interface Header Name设置为 RNTwilioVideoWebRTC-Swift.h

问题是然后我尝试在模块内运行示例应用程序,它会提示错误RNTwilioVideoWebRTC/RNTwilioVideoWebRTC-Swift.h file not found

我错过了什么?谢谢!

有几件事可以确保:

  1. 检查桥接文件在项目中是否可用。如果可用,请确保已在桥文件中导入YourProductName-Swift.h。如果没有,请创建一个桥接文件。
  2. @objc标记类和方法,使它们在Objective C代码中可访问。

您可以按照此答案作为参考。

存档将成功 已经测试

如何在目标 c 项目或 react 本机项目中调用 swift 函数(也可以在 swift 框架中)

它将适用于 反应原生 也遵循以下步骤:

打开构建设置并检查以下参数:定义模块:是

在 AppDelegate.h 中

#import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h>
@class KB;
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
@property (strong, nonatomic) KB *appkb;
@end

在 AppDelegate.m 中

#import "AppDelegate.h"
#import "ProductModuleName-Swift.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self.appkb methodReceiveSwiftClass];
[self.appkb methodEvents:event prop:properties];
}
@end

KB.swift

import Foundation
// import framework if using a swift framework in objective c or react native native modules.
@objc public class KB:NSObject{

@objc public func methodReceiveSwiftClass(){
//write anything here....
}
@objc public func methodEvents(_ event: String, prop: String){
//write anything here
//func with params
}
}

ProjectModuleName-Bridging-Header.h

#import "React/RCTBridgeModule.h"
#import "AppDelegate.h"

最新更新