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

9gm1akwq  于 2022-12-22  发布在  Swift
关注(0)|答案(2)|浏览(168)

我正在为一个react原生模块(https://github.com/blackuy/react-native-twilio-video-webrtc)开发一个新特性,问题是它是用Objective-C开发的,我需要导入一个新的Swift类。
我目前所做的:
1.使用包的名称导入它,在本例中为#import <RNTwilioVideoWebRTC/RNTwilioVideoWebRTC-Swift.h>
1.确保预编译桥接标头设置为是
1.将Objective-C Generated Interface Header Name设置为RNTwilioVideoWebRTC-Swift. h
问题是,当我尝试在模块中运行示例应用程序时,它提示错误RNTwilioVideoWebRTC/RNTwilioVideoWebRTC-Swift.h file not found
我错过了什么?谢谢!

py49o6xq

py49o6xq1#

有几件事要确保:
1.检查桥接文件在您的项目中是否可用。如果可用,请确保您已在桥文件中导入YourProductName-Swift.h。如果不可用,请创建一个桥文件。
1.用@objc标记类和方法,使它们可以在Objective C代码中访问。
您可以参考此answer

kpbpu008

kpbpu0082#

存档将成功,已测试
如何在目标c项目或响应本地项目中调用swift函数(也可以在swift框架中)

  • 它也适用于react-native * 请执行以下步骤:

打开生成设置并检查以下参数:定义模块:是
在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"

相关问题