【发布时间】:2019-12-15 11:23:03
【问题描述】:
我有 React Native 应用程序,我需要使用 RCT_EXTERN_METHOD 宏在 IOS 上实现原生模块。 我的步骤:
在 XCode 中创建了 Settings.swift 文件。
已创建桥接 - 标头。
在 XCode 中创建了 Settings.m 文件。
在 Xcode 的 Settings.swift 文件中声明了 Class 组件以及内部变量和函数。
在 XCode 中使用 RCT_EXTERN_METHOD 宏在 Settings.m 文件中注册函数。
导入Native Modules并在React Native项目中使用。
我需要使用我的 swift 文件中的变量,例如我的 React Native 项目中的状态,并使用 Swift 文件中声明的函数来管理它。当我调用该函数时,它可以工作,但我无法从 Native Modules 中获取变量,例如 NativeModules.Settings.getSwitchGeneralTagLog 我不确定。你能告诉我如何从 Native Module 中获取变量吗?它是用于状态的好方法吗? Swift 中管理状态的最佳方式是什么?
Settings.swift:
import Foundation
@objc(Settings)
class Settings: NSObject {
private var generalTagLog = false
@objc
func getSwitchGeneralTagLog() -> Bool {
return generalTagLog
}
@objc
func switchGeneralTagLog() -> Bool {
return generalTagLog ? false : true
}
@objc
static func requiresMainQueueSetup() -> Bool {
return true
}
}
设置.m:
#import <Foundation/Foundation.h>
#import "React/RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(Settings, NSObject)
RCT_EXTERN_METHOD(switchGeneralTagLog)
@end
【问题讨论】:
-
您可以创建一个函数来从 Swift 中返回变量。
-
我已经尝试过使用函数并得到错误:警告:道具类型失败:提供给
function类型的无效道具valueSwitch,预期boolean。 -
请告诉我你创建函数的部分和调用它的部分。
-
制造 - codeshare.io/ad9kxK,致电 - codeshare.io/5ol4zb
-
这两个代码是一样的。
标签: objective-c swift xcode react-native macros