Swift < - > React Native Bridge复制接口

Swift < - > React Native Bridge复制接口,第1张

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

Duplicate interface 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 Foundationimport 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 ReactManagerBrIDgeRCT_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复制接口所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1047338.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存