【发布时间】: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,但正如您所见,这不起作用。
我不确定这是否是因为模块未正确公开/导入,或者仅仅是快速转换错误。但bridge 和RNCAsyncStorage 均未解决。
【问题讨论】:
标签: ios objective-c swift react-native