【问题标题】:How do i use react native RCNAsyncStorage module from native swift code我如何使用本机 swift 代码中的 react 本机 RCNAsyncStorage 模块
【发布时间】:2019-05-13 12:23:57
【问题描述】:

我有一个 react 本机应用程序,我在其中使用 RNCAsyncStorage npm 模块进行简单的数据持久性。然而,我的iOS 版本的应用附带了一个共享扩展,而这个共享扩展需要访问我存储的数据字符串之一。

简而言之,我想使用 swift 本机代码中的 RNCAynscStorage 来获取从我的 react 本机代码中存储的数据。

在尝试实施该模块之前,我询问了 RNC,他们回答:

这是可能的,但需要一些关于原生模块的知识 工作一般。我不确定这对未来有多大影响 即将在 React Native 中进行的重构工作,但这就是你的方式 今天可以访问它:

// First, get the RNCAsyncStorage instance from the bridge
RNCAsyncStorage *asyncStorage = [bridge moduleForClass:[RNCAsyncStorage class]];

// Then call the getter:
[asyncStorage multiGet:@[@"count"]] callback:^(NSArray *response){
    NSObject *count = response[0];
    if ([count isKindOfClass:[NSError class]]) {
        // Failed to get count
        return;
    }

    // Use count here
}];

但是,我的扩展是用 swift 编写的,我不确定转换为 swift 后会是什么样子。

首先,我按照指南使反应桥模块可以在 swift 代码中访问,这就是我的 brinding 的样子:

我还尝试将 objecttive-C 示例转换为 seift,但正如您所见,这不起作用。 我不确定这是否是因为模块未正确公开/导入,或者仅仅是快速转换错误。但bridgeRNCAsyncStorage 均未解决。

【问题讨论】:

    标签: ios objective-c swift react-native


    【解决方案1】:

    据我了解,您想在扩展程序中访问 AsyncStorage(今天或共享)

    我正在考虑您的扩展代码将在 swift 中。

    第 1 步: 首先,您需要在扩展本身中创建桥接头,而不是在主项目中。

    第 2 步: 在 Link Binary With Libraries (Under Build Phase) 中的 Share Extension Target 中声明要访问的所有库,尤其是 (libRNCAsyncStorage.a)

    第 3 步: 在桥头文件(.h)中,您必须导入 RNCAsyncStorage.h

    第 4 步:现在,在扩展程序中的任意位置访问 AsyncStore。

    【讨论】:

    • 嗨,谢谢,我真的可以在 7 个月前使用该建议/信息! :) 我最终将自己的键/值 json 文件写入 app.group 共享文件,并在完全不使用 RNCAsyncStorage 的情况下快速读取和写入同一个文件。但我相信这会奏效
    • 那么哪种方法更好?
    • 我认为这取决于需要做什么。在我的情况下,它正在传输一次性身份令牌以将扩展程序登录到远程服务。为此,我认为真正的最佳方法是使用钥匙串,但我找不到任何从反应原生添加到钥匙串的方法。我认为在 React Native 和原生 iOS 应用之间共享数据并不是一件容易的事,似乎大多数开发人员在做纯原生 iOS 应用时,只要它们变得有点复杂。我认为我没有资格说什么是最好的方法;)
    • @Minkoo,我正在按照这里的说明进行操作。但卡在找不到“React/RCTBridgeModule.h”文件。错误来自在扩展中创建的桥接头文件。
    • @Erangad 桥接问题。创建 headerFile(目标 C)时,不要忘记选中目标复选框。一个当然是你的扩展和主要目标。
    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2018-02-06
    相关资源
    最近更新 更多