gpt4 book ai didi

ios - 适用于 iOS 的 Swift NativeModule 始终为 null

转载 作者:行者123 更新时间:2023-12-05 04:47:47 24 4
gpt4 key购买 nike

我正在使用 ReactNative 为 IOS 和 Android 构建一个移动应用程序。我还使用 Swift 为 iOS 构建了一个原生模块。但是当我从 JS 访问模块类时,它总是返回 null。

我使用以下代码创建了一个 WaterRowerBleManager.swift 文件。

import Foundation

@objc(WaterRowerBleManager)
class WaterRowerBleManager: NSObject {
@objc
func constantsToExpose() -> [AnyHashable : Any]! {
return [
"number": 123.9,
"string": "foo",
"boolean": true,
"array": [1, 22.2, "33"],
"object": ["a": 1, "b": 2]
]
}

@objc
static func requiresMainQueueSetup() -> Bool {
return true
}
}

它还创建了一个扩展名为“.h”的桥头文件。我已将文件保留原样。

然后我使用以下代码创建了一个 WaterRowerBleManager.m 文件。

#import <Foundation/Foundation.h>
#import "React/RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(WaterRowerBleManager, NSObject)
@end

从 ReactNative 中,从 App.js 访问模块,如下所示。

import { NativeModules } from 'react-native';
NativeModules.WaterRowerBleManager

NativeModules.WaterRowerBleManager 总是返回 null。我的代码有什么问题,我该如何解决?

最佳答案

您需要创建 Bridge 文件并需要导出模块名称才能使用它。

在您的WaterRowerBleManager.h 文件中

#import <React/RCTBridgeModule.h>

@interface WaterRowerBleManager : NSObject@结束

在您的WaterRowerBleManager.m 文件中

RCT_EXPORT_MODULE(WaterRowerBleManager);

关于ios - 适用于 iOS 的 Swift NativeModule 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68376713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com