objective-c - 使用 React Native 的 Native Modules 从 Swift 文件中获取变量?

标签 objective-c swift xcode react-native macros

我有 react 原生 我需要在 上实现 native 模块IOS RCT_EXTERN_METHOD 宏。
我的步骤:

  • 中创建 Settings.swift 文件X码 .
  • 创建桥接 - header 。
  • 中创建 Settings.m 文件X码 .
  • 中 Settings.swift 文件中声明的 Class 组件和内部变量和函数Xcode .
  • 在 Settings.m 文件中使用 注册的函数RCT_EXTERN_METHOD XCode 中的宏。
  • 进口 原生模块 并在 中使用它 react 原生 项目。

  • 我需要使用我的 swift 文件中的变量,比如我的 React Native 项目中的状态,并使用 中声明的函数来管理它。 swift 文件。当我调用该函数时,它可以工作,但我无法从 获取变量原生模块 像 NativeModules.Settings.getSwitchGeneralTagLog
    我不确定。你能告诉我如何从 Native Module 中获取变量吗?它是用于状态的好方法吗? 中管理状态的最佳方法是什么? swift ?

    设置.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
    
    

    最佳答案

    我将专注于一个功能,您可以在此基础上扩展它

    设置.m

    
    RCT_EXTERN_METHOD(getSwitchGeneralTagLog:(RCTPromiseResolveBlock)promise rejector: (RCTPromiseRejectBlock)reject)
    
    

    在下面的场景中,我们没有处理任何异常

    设置.swift

    
     @objc func getSwitchGeneralTagLog(_ promise: RCTPromiseResolveBlock, rejector reject: RCTPromiseRejectBlock) {
    
        var isSwitch = false 
    
         // figure out what need to be done for the flag 
    
        promise(isSwitch)
      }
    

    在您的 RN Accept 中,您可以从 Promise 中提取结果并使用它。

    关于objective-c - 使用 React Native 的 Native Modules 从 Swift 文件中获取变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400897/

    相关文章:

    objective-c - viewForHeaderInSection : not called when reloadData: is called

    objective-c - 如何编写通过两次鼠标单击绘制直线的代码(OSX Mac 应用程序)?

    swift - 将 SQLClient 导入现有的 Xcode (Swift) 项目

    ios - 陀螺仪旋转数据和设备运动旋转数据有什么区别?

    ios - UITableViewCell 内部阴影右侧单独

    ios - 如何删除 UITableView 中的行并更新 UITableViewCell 中的标签

    ios - Swift Firebase 注销问题,只有在重新打开应用程序后才能成功注销

    iphone - 在 xcode 中保存/共享字符串

    ios - 如何通过命令行创建目标

    ios - 如果我在我的生产应用程序中使用第三方崩溃分析 sdk,它会抑制我的 iTunes 崩溃报告吗?