2016-07-19 13 views
0

Ich bin neu im React-Native-Framework und habe mich gefragt, wo AsyncStorage die Daten auf einem Gerät speichert. Ich weiß, dass es ein serialisiertes Wörterbuch für kleine Datenspeicher und vollständige Dateien für große Datenspeicher erstellt, aber wo finde ich diese Dateien?Wo speichert Native's AsyncStorage seine Daten?

Antwort

0

Read the docs:

Auf iOS wird AsyncStorage durch nativen Code gesichert, dass kleine Werte in einem serialisierten Wörterbuch und größere Werte in separaten Dateien gespeichert werden. Unter Android verwendet AsyncStorage entweder RocksDB oder SQLite basierend auf dem, was verfügbar ist.

+1

Es geholfen hätte, um herauszufinden, wo genau die Dateien gespeichert sind. Ich denke, wir haben alle die Dokumente gelesen. Auf meinem Emulator scheinen die Dateien unter '/ data/data/com.my.app /' zu leben – hcvst

0

Auf IOS sieht es aus wie es in

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; 
} 
0

Die Antwort in der Reaktion-native Code setzt, wie durch eine vorherige Antwort vorgeschlagen. Der tatsächliche Standort auf Ihrem mobilen Gerät wird von NSDocumentDirectory bestimmt. Da Apple Ihre App in einer Sandbox-Umgebung ausführt, erhalten Sie nur Zugriff auf die Verzeichnisse in Ihrem App-Bundle. Sehen Sie diese SO Frage/Antworten für weitere Details zu diesem Thema: What is the documents directory (NSDocumentDirectory)?.

TL; DR: Sie können beliebige Dateien in dieses Verzeichnis einfügen, aber in einigen Fällen kann dies gelöscht werden, z. B. wenn der Benutzer Ihre App löscht und neu installiert oder während Betriebssystem-Upgrades. Das Verzeichnis selbst ist ~/Dokumente im Paket, obwohl ich mir nicht sicher bin, warum das so wichtig ist.

Der entsprechende Code in reagieren-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; 
}