我有一个React Native应用,其中我使用RNCAsyncStorage
npm模块来实现简单的数据持久化。但是,我的iOS
版应用附带了一个共享扩展名,该共享扩展名需要访问我存储的数据字符串之一。
因此,简而言之,我想使用快速本机代码中的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后的外观。
首先,我遵循了一个指南,以快速的代码来访问react bridge模块,这就是我的想法:
我还尝试将目标C示例转换为seift,但是您无法看到这是行得通的。
我不确定这是因为模块未正确公开/导入,还是仅仅是快速转换错误而已。但bridge
和RNCAsyncStorage
均未解决。
答案 0 :(得分:1)
据我了解,您想以扩展名(今天或共享)访问AsyncStorage
我正在考虑您的扩展代码很快。
步骤1: 首先,您需要在扩展本身而不是在主项目中创建一个桥接头。
步骤2: 在“使用库的链接二进制文件”中的“共享扩展目标”中声明要访问的所有库(在构建阶段),尤其是(libRNCAsyncStorage.a)
步骤3: 在网桥头文件(.h)中,您必须导入RNCAsyncStorage.h
步骤4:现在,在扩展程序中的任何位置访问AsyncStore。