我是React-Native框架的新手,想知道AsyncStorage在设备上存储数据的位置。我知道它创建了一个用于小数据存储的序列化字典和用于大数据存储的完整文件,但我在哪里可以找到这些文件?
答案 0 :(得分:2)
答案是在react-native代码中,正如之前的答案所示。移动设备上的实际位置将由NSDocumentDirectory确定。由于Apple在沙盒环境中运行您的应用程序,因此您只能访问应用程序包中的目录。有关此主题的更多详细信息,请参阅此SO问题/答案:Arrays.copyOfRange(arr, 0, position)
。
TL; DR:您可以将任何文件放在此目录中,但在某些情况下可以删除此文件,例如用户删除您的应用并重新安装或在操作系统升级期间。目录本身就是捆绑中的〜/ Documents,显然虽然我不确定为什么这么重要。
react-native中的相关代码:
static NSString *RCTGetStorageDirectory()
{
static NSString *storageDirectory = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
#if TARGET_OS_TV
storageDirectory = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
#else
storageDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
#endif
storageDirectory = [storageDirectory stringByAppendingPathComponent:RCTStorageDirectory];
});
return storageDirectory;
}
答案 1 :(得分:1)
在IOS上,它看起来像是放入
static NSString *const RCTStorageDirectory = @"RCTAsyncLocalStorage_V1";
static NSString *const RCTManifestFileName = @"manifest.json";
static NSString *RCTGetStorageDirectory()
{
static NSString *storageDirectory = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
storageDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
storageDirectory = [storageDirectory stringByAppendingPathComponent:RCTStorageDirectory];
});
return storageDirectory;
}
答案 2 :(得分:-1)
在 iOS 上,AsyncStorage由存储较小值的本机代码提供支持 在序列化的字典中,在单独的文件中使用较大的值。上 Android ,AsyncStorage将根据具体内容使用RocksDB或SQLite 是可用的。