我正在为反应原生模块开发一个新功能(https://github.com/blackuy/react-native-twilio-video-webrtc),问题是它是用Objective-C开发的,我需要导入一个新的Swift类。
到目前为止我做了什么:
- 使用包的名称导入它,在本例中
#import <RNTwilioVideoWebRTC/RNTwilioVideoWebRTC-Swift.h>
- 确保"预编译桥接标头"设置为"是 "
- 将
Objective-C Generated Interface Header Name
设置为 RNTwilioVideoWebRTC-Swift.h
问题是然后我尝试在模块内运行示例应用程序,它会提示错误RNTwilioVideoWebRTC/RNTwilioVideoWebRTC-Swift.h file not found
我错过了什么?谢谢!
有几件事可以确保:
- 检查桥接文件在项目中是否可用。如果可用,请确保已在桥文件中导入
YourProductName-Swift.h
。如果没有,请创建一个桥接文件。 - 用
@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"