React Native中AsyncStorage 在iOS/Android中的存储位置

AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。它用来代替LocalStorage。

我们推荐您在AsyncStorage的基础上做一层抽象封装,而不是直接使用AsyncStorage

译注:推荐由React Native中文网封装维护的react-native-storage模块,提供了较多便利功能。

React-Native 开发与原生开发交互的时候,Native端也需要取AsyncStorage存储的value

iOS Native端

iOS存储路径为:
Documents 目录下的RCTAsyncLocalStorage_XXX/manifest.json 文件,保存的文档实质就是个json 文本
取值方式有如下几种:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString* thepath = [paths lastObject];

thepath = [thepath stringByAppendingPathComponent:@"RCTAsyncLocalStorage_V1/manifest.json"];

NSLog(@"目录:%@", thepath);        //第一种方法: NSFileManager实例方法读取数据

NSFileManager* fm = [NSFileManager defaultManager];

NSData* data = [[NSData alloc] init];

data = [fm contentsAtPath:thepath];

NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

//第二种方法: NSData类方法读取数据        data = [NSData dataWithContentsOfFile:thepath];

NSLog(@"NSData类方法读取的内容是:%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

//第三种方法: NSString类方法读取内容
NSString* content = [NSString stringWithContentsOfFile:thepath encoding:NSUTF8StringEncoding error:nil];

NSLog(@"NSString类方法读取的内容是:\n%@",content);

Android Native端

Android存储方式为使用sqlite3
/data/data//database

文件名称为RKStorage

数据文件

注:在网上查的信息,大多说的是 AsyncStorage存储,类似于sharedpreference方式存储。但经过考证发现不是,存储方式sqlite。这个可能跟react-native版本不同有关系,本文使用的版本为
"react": "16.3.0-alpha.1", "react-native": "0.54",

你可能感兴趣的:(React Native中AsyncStorage 在iOS/Android中的存储位置)