iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift < - > React Native Bridge复制接口大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我目前正在尝试在 Swift中创建一个自定义模块并将其桥接到React Native.我已经按照RN文档中的教程,甚至是他们的代码中的评论,但我不断收到以下编译错误: Duplicat@R_607_9473@erface definition for class 'StorageManager' 有人知道如何解决这个错误? 桥.m文件: #import "RCTBridgeModule.h" @interfa
我目前正在尝试在 Swift中创建一个自定义模块并将其桥接到React Native.我已经按照RN文档中的教程,甚至是他们的代码中的评论,但我不断收到以下编译错误

Duplicat@R_607_9473@erface deFinition for class 'StorageManager'

有人知道如何解决这个错误

桥.m文件

#import "RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(StorageManager,NSObject)

RCT_EXTERN_METHOD(getAccessToken:(RCTPromiseResolveBlock*)resolver reject:(RCTPromiseRejectBlock*)reject)
RCT_EXTERN_METHOD(getrefreshToken:(RCTPromiseResolveBlock*)resolver reject:(RCTPromiseRejectBlock*)reject)
RCT_EXTERN_METHOD(getSELEctedNetworkId:(RCTPromiseResolveBlock*)resolver reject:(RCTPromiseRejectBlock*)reject)
@end

快速实施

import Foundation

@objc(StorageManager)
class StorageManager: NSObject {

    @objc func getAccessToken(resolver:rCTPromiseResolveBlock,reject:rCTPromiseRejectBlock) {

        let accessToken = Shared.getObjectPrefs("access_token")
        if(accessToken != nil){
            resolver(accessToken)
        }
        else {
            reject("no_access_token","No access token present",nil)
        }
    }

    @objc func getrefreshToken(resolver:rCTPromiseResolveBlock,reject:rCTPromiseRejectBlock) {

        let refreshToken = Shared.getObjectPrefs("refresh_token")
        if(refreshToken != nil){
            resolver(refreshToken)
        }
        else {
            reject("no_refresh_token","No refresh token present",nil)
        }
    }

    @objc func getSELEctedNetworkId(resolver:rCTPromiseResolveBlock,reject:rCTPromiseRejectBlock) {

        let networkId = Shared.getObjectPrefs("current_network_id")
        if(networkId != nil){
            resolver(networkId)
        }
        else {
            reject("no_network_id","No network id present",nil)
        }
    }


}

解决方法

我在Swift 3,RN 0.45.1中找到了解决方

在您的ReactManager.swift文件

import Foundation
import React

@objc(ReactManager) 
class ReactManager: NSObject {
var bridge: RCTBridge!

@objc func addEvent(name: String,LOCATIOn: String,date: NSnumber) -> Void {
    // Date is ready to use!
}

@objc func dismissPresentedViewController(_ reactTag: NSnumber) {
    DispatchQueue.main.async {
        if let view = self.bridge.uiManager.view(forReactTag: reactTag) {
            print(view)
            let presentedViewController = view.reactViewController()
            guard let vc = presentedViewController else { return }
            vc.navigationController?.pop(animated: truE)
        }
    }
}
}

在ReactManagerBridge.h文件

#import <React/RCTBridgeModule.h>
@interface ReactManagerBridge : NSObject <RCTBridgeModule>
@end

在ReactManagerBridge.m文件中,

#import "ReactManagerBridge.h"
#import "zigbang-Swift.h"

@implementation ReactManagerBridge

RCT_EXPORT_MODULE(ReactManager);

RCT_EXPORT_METHOD(dismissPresentedViewController:(nonnull NSnumber *)reactTag) {
ReactManager* reactManager = [[ReactManager alloc] init];
[reactManager dismissPresentedViewController:reactTag];

}

RCT_EXTERN_METHOD(addEvent:(NSString *)name LOCATIOn:(NSString *)LOCATIOn date:(nonnull NSnumber *)datE)

@end

这个有效!希望这个答案可以帮到你

大佬总结

以上是大佬教程为你收集整理的Swift < - > React Native Bridge复制接口全部内容,希望文章能够帮你解决Swift < - > React Native Bridge复制接口所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。