如何在中访问iOS项目的NSUserDefault以响应本机?

如何在中访问iOS项目的NSUserDefault以响应本机?,ios,swift,react-native,Ios,Swift,React Native,我在iOS swift中创建了一个项目,并在swift中创建了几个屏幕,现在我想在中使用这些屏幕来进行本机反应,因此我需要访问swift NSUserDefault以进行持久会话的本机反应,因此我如何使用它请帮助我 谢谢。您可以像这样将数据存储在持久存储中 下面是示例代码段 AsyncStorage.setItem('loggedIn', true); 在app.js中,您可以在构造函数中检查此标志 AsyncStorage.getItem('loggedIn').then((value) =

我在iOS swift中创建了一个项目,并在swift中创建了几个屏幕,现在我想在中使用这些屏幕来进行本机反应,因此我需要访问swift NSUserDefault以进行持久会话的本机反应,因此我如何使用它请帮助我


谢谢。

您可以像这样将数据存储在持久存储中

下面是示例代码段

AsyncStorage.setItem('loggedIn', true);
在app.js中,您可以在构造函数中检查此标志

AsyncStorage.getItem('loggedIn').then((value) => {
        if (value) {
           //user logged in logic goes here
        } else {
         // user logged out. You need to login him again
        }
     });

最简单的方法是在XCode项目中通过添加下一个文件在objc中创建一个小的本机模块(因为ReactNative SDK是objc代码):

RNUserDefaults.h

#导入
@接口RNUserDefaults:NSObject
@结束
RNUserDefaults.m

#导入“RNUserDefaults.h”
@实现RNUserDefaults
RCT_导出_模块(用户默认值)
RCT\u导出\u方法(集合:(NSString*)键值:(id)值){
[NSUserDefaults.standardUserDefaults设置对象:值forKey:key];
}
RCT_导出_方法(get:(NSString*)键回调:(rctreponsesenderblock)回调){
id值=[NSUserDefaults.standardUserDefaults objectForKey:key];
回调(@[value]);
}
@结束
在Swift中实现本机模块要困难得多,因为您还应该添加.h和.m文件,以便使用外部声明将(
RCT\u EXTERN\u REMAP\u module
)重新映射到Swift(
RCT\u EXTERN\u METHOD

如何使用:

导入{
...
本地模块,
}从“反应本机”;
...
NativeModules.UserDefaults.set('userId',1234);
NativeModules.UserDefaults.get('userId',value=>{
警报(值);//显示1234
});

我已经使用NSUserDefault在iOS swift中设置了Item,但我想访问React native.try
AsyncStorage中保存的NSUserDefault值。getItem
此内容为空