Wie finde ich meine Realm-Datei?

238

Ich habe eine Datenbank nach Realm erstellt und kann die Datei nicht finden, da mein Betriebssystem (Yosemite) keinen mobilen Ordner in / private / var / mobile hat.

Wie soll ich auf meinen Realm zugreifen, um ihn im Browser auszuführen?

Cross gepostet von Google-Gruppen

Yoshyosh
quelle
Überprüfen Sie dies heraus. Diese Methode funktioniert sowohl für gerootete als auch für nicht gerootete Geräte.
Krhitesh

Antworten:

474

Eine Realm-Datei finden

Für Android

Wie kann ich meine Realm-Datei im Realm-Browser anzeigen?

Für iOS

Wenn sich Ihre App auf dem Gerät befindet

Stellen Sie sicher, dass Ihr Gerät angeschlossen ist, und rufen Sie das Gerätefenster im Xcode-Menüfenster > Geräte (⌘⇧2) auf. Dort können Sie Ihr Gerät und Ihre App aus einer Liste installierter Apps mit Debugging-Berechtigungen auswählen.

Gehen Sie nach Auswahl Ihrer App zum Zahnrad in der Symbolleiste unten in der Tabellenansicht und wählen Sie „Container herunterladen…“ . Dort können Sie die Datei vom Dokumentenspeicherort auf Ihren Mac ziehen. Es wird als xcappdata-Bundle gespeichert.

Wenn Sie den lokalen Pfad im Finder öffnen, in dem Sie ihn gespeichert haben, können Sie darauf zugreifen, indem Sie im Kontextmenü des Finders „Paketinhalt anzeigen“ auswählen, wenn Sie die Datei auswählen. Ein neues Finder-Fenster wird geöffnet, in dem Sie Ihr Realm im folgenden Pfad finden (z. B.): AppData / Documents / default.realm (Das Verzeichnis '/ private / var / mobile' ist der Pfad, der von iOS auf dem verwendet wird Gerätedateisystem.

Wenn sich Ihre App im Simulator befindet

Gehen Sie in das Verzeichnis Ihres Benutzers:

/Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-uuid>/data/Containers/Data/Application/<application-uuid>/Documents/default.realm

Der wahrscheinlich einfachste Weg, den aktuellen Pfad des Standardbereichs abzurufen, besteht darin, den Simulator anzuhalten und Folgendes in die LLDB-Konsole einzugeben:

Ziel-C :
(lldb) po [RLMRealmConfiguration defaultConfiguration].fileURL

Schnell mit Realm Objective-C :
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

Swift mit Realm Swift :
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

Wenn Sie eine RLMRealmInstanz zur Hand haben, können Sie Folgendes verwenden:
(lldb) po myRealm.configuration.fileURL

Kopieren Sie dann einfach diesen Pfad, öffnen Sie Ihr Terminal und geben Sie open [Hier eingefügter Pfad] ein.

HINWEIS: Einige Pfade enthalten ein Leerzeichen. Verwenden Sie daher "\" vor dem Leerzeichen, um es zu umgehen

Hilfstool SimPholders

Dies ist wahrscheinlich der schnellste Weg, um die Datei einer App im Simulator zu finden. Installieren Sie SimPholders . Auf diese Weise können Sie direkt über Ihre Menüleiste auf das Dokumentenverzeichnis Ihrer App zugreifen.

Hinweis Einige Leute haben erwähnt, dass SimPholders sie in den falschen Simulator-App-Ordner verschoben hat. Wenn dies bei Ihnen der Fall ist, drucken Sie Ihren Realm-Pfad aus, indem Sie die obigen Schritte ausführen und Ihren Realm.path ausdrucken

Yoshyosh
quelle
1
Nach dem letzten Update tritt ein Fehler auf, wenn Sie dies tun po RLMRealm.defaultRealmPath(). Es heißtcalled object type 'NSString *' is not a function or function pointer
carbonr
Ich habe das gleiche Problem wie @carbonr. Kann jemand helfen?
Denislexic
2
Objective-C-Version über po [[RLMRealm defaultRealm]path]
0.97
5
Ein Teil dieser Antwort ist jetzt veraltet. Hier ist die neueste Möglichkeit, Ihre Realm-Datenbankdatei (default.realm) mit RealmSwift zu finden:Realm.Configuration.defaultConfiguration.fileURL
Nodebase
1
Mit der RealmSwift-Methode erhalte ich Folgendes:error: use of undeclared identifier 'Realm'
Simon Bengtsson
122

Ich habe den einfachsten Weg für iOS / macOS gefunden (für Swift 3 Xcode 8.3)

override func viewDidLoad() {

   // for swift 2.0 Xcode 7
   print(Realm.Configuration.defaultConfiguration.fileURL!)
}

Dann protokolliert x-Code den richtigen Pfad. Überprüfen Sie den folgenden Bildschirm.

Geben Sie hier die Bildbeschreibung ein

Öffnen Sie nun Ihren Finder und drücken Sie + + G(Befehl + Umschalt + G) und fügen Sie den Pfad ein , der sich bei Ihrem Xcode anmeldet

Kamaal ABOOTHALIB
quelle
10
Pfad ist veraltet. Verwenden Sie Realm.Configuration.defaultConfiguration.fileURLstattdessen
Hewigovens
2
Es wurde in Realm.configuration.fileURL geändert
Reshad
3
Swift 3, xcode8.3 funktioniert auch mitRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz
Ich folgte dem gleichen Prozess, aber ich kann den Dateipfad im Finder nicht finden
RejoylinLokeshwaran
1
Dies ist perfekt für den Simulator und sobald Sie Ihre Datei gefunden haben, können Sie mit einem einfachen Cmd-Klick auf "Open WIth" klicken, um Realm Studio zu starten. Dies wirft die Frage oder den Gedanken auf: Realm Studio benötigt eine Menüoption "Aktuelle Datei öffnen"!
zeichnete ..
39

Eine einfache Alternative für Simulator-Apps

Erstellen Sie einen intelligenten Ordner / eine Suche im Finder. Ermöglicht einen schnellen und einfachen anklickbaren Zugriff auf alle Ihre Realm-Dateien.

  1. Öffnen Sie den Ordner /Users/$USER/Library/Developer/CoreSimulator/Devicesim Finder.

    Mit Terminal open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. Suchen nach .realm

  3. Ändern Sie die Suche so, dass sie nur im "Devices"Ordner angezeigt wird.

  1. Speichern Sie die Suche in Ihrer Seitenleiste (z. B. als Realms).

Nach Datum sortiert erhalten Sie eine schnell und einfach anklickbare Liste der zuletzt geänderten Simulator- .realmDateien.

Erzdoog
quelle
Danke @Archdoog - keine schlechte Idee, wenn Sie mit Realm viele neue Projekte durchlaufen
Allen
4
Das Speichern als Suche ist genial! Danke dir! :)
Karlingen
22

Hier ist eine einfache Lösung. Ich habe eine Weile damit herumgespielt. Ich sollte darauf hinweisen, dass dies eine spezielle Anleitung ist, die Android Studio und den AVD-Emulator verwendet.

1) Starten Sie den Emulator und führen Sie Ihre App aus.

2) Öffnen Sie den Android-Gerätemonitor, während die App noch ausgeführt wird. (Es befindet sich in der Symbolleiste neben den Symbolen für den AVD- und SDK-Manager.)

3) Klicken Sie im Geräte-Monitor auf die Registerkarte Datei-Explorer. Es sollte viele Ordner geben.

4) Navigieren Sie auf folgendem Pfad: Daten> Daten> Ihr Paketname> Dateien> Default.Realm (oder wie auch immer Sie es genannt haben)

Ex. Wenn Sie eines der Realm-Beispielprojekte verwenden, lautet der Pfad etwa Daten> Daten> io.realm.examples.realmgridview> Dateien> default.realm

5) Markieren Sie die Datei und klicken Sie oben rechts auf das Diskettensymbol "Datei vom Gerät ziehen".

6) Speichern Sie es an einem beliebigen Ort.

Michael Elkins
quelle
18

Was ich getan habe, war zu benutzen

let realm = Realm(path: "/Users/me/Desktop/TestRealm.realm")

und dann wird es in voller Ansicht auf meinem Desktop erstellt und ich kann doppelklicken, um den Realm Browser darauf zu starten. Später kann ich den Parameter entfernen und ihn den Standardspeicherort verwenden lassen, wenn ich überzeugt bin, dass alles wie erwartet funktioniert.

Stephen Watson
quelle
1
Ich erhalte die Fehlermeldung "Argumentbezeichnungen '(Pfad :)' stimmen nicht mit verfügbaren Überladungen überein". Irgendeine Idee warum?
Marcelo Gracietti
Das ist einfach unglaublich, haha!
WilomGfx
Ideal zum Testen auf dem Simulator, funktioniert aber auf einem realen Gerät wahrscheinlich nicht richtig.
Störung
lass Realm = versuchen! Realm (fileURL: URL (Zeichenfolge: "/Users/[me‹/Desktop/TestRealm.realm")!)
Harris
11

Ziel c - [RLMRealmConfiguration defaultConfiguration].fileURL

NSLog(@"%@",[RLMRealmConfiguration defaultConfiguration].fileURL);

ZB- / Benutzer / "Ihr-Benutzername" / Bibliothek / Entwickler / CoreSimulator / Geräte / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / Daten / Container / Daten / Anwendung / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Dokumente /.

Dies ist der einfachste Befehl, den Sie ausführen können, um Ihren Pfad zur .realm-Datei abzurufen. Sie sehen die .realm-Datei, nachdem alle Lese- und Schreibvorgänge abgeschlossen sind.

Oder

Sie können Open Source OpenSim , eine Alternative zu Simuldern , verwenden, um direkt über Ihre Menüleiste auf das Dokumentenverzeichnis Ihrer App zuzugreifen

Priyansh
quelle
11

Die obigen Antworten, bei denen es nicht möglich ist, die Realm-Datei auf der Android-Plattform zu finden, und glauben Sie mir, dass Sie auf diese Weise viel Zeit sparen, die wir normalerweise bei anderen Ansätzen zum Abrufen der Realm-Datei verschwenden. So lass uns anfangen...

Öffnen Sie zuerst "Device File Explorer" in Android Studio (Ansicht -> Tools Windows -> Device File Explorer.

Dadurch wird Ihr Geräte-Explorer geöffnet.

Geben Sie hier die Bildbeschreibung ein

Öffnen Sie jetzt Daten -> Daten -> (Ihr_App_Paketname) -> Dateien -> default.realm

default.realm ist die Datei, für die wir hier sind. Speichern Sie nun diese Datei an Ihrem Speicherort und greifen Sie über den Realm-Browser auf die Datei zu. Sie erhalten dann Ihre Datenbank.

HINWEIS: Der erwähnte Ansatz wird auf einem Telefon ohne Rootberechtigung (eins + 3) getestet.

anoopbryan2
quelle
10

Wenn Sie die Standard-Realm-Datenbank im Simulator verwenden:

po Realm().configuration.fileURL
superarts.org
quelle
Können Sie einige Details hinzufügen?
Zeeshan
@zeeshan Bitte halten Sie Ihren Simulator während der Ausführung an, geben Sie den Befehl ein und drücken Sie die Eingabetaste.
Superarts.org
9

Aktualisierte Antwort auf das neueste Reich:

Für Android:

Kasse stetho und https://github.com/uPhyca/stetho-realm Video-Tutorial hier: https://www.youtube.com/watch?v=9pFJz5VexRw

Für IOS (Swift)

Entweder:

debugPrint("Path to realm file: " + realm.configuration.fileURL!.absoluteString)

oder

Schritt 1: Haben Sie irgendwo eine Konstante namens dev. Sagen wir Konstante Datei

public class Constants {

    public static var dev: Bool = true

}

Schritt 2: Erstellen Sie eine weitere Klasse mit dem Namen RealmFunctions.swift

import RealmSwift


func realmAndPath() -> Realm {
    if Constants.dev {
        // location of my desktop
        let testRealmURL = NSURL(fileURLWithPath: "/Users/#####/Desktop/TestRealm.realm")
        return try! Realm(fileURL: testRealmURL)
    } else {
        return try! Realm()
    }
}

Schritt 3: Endlich in Ihrem View Controller:

let realm = realmAndPath()

Vielen Dank an Stewart Lynch für die ursprüngliche Antwort

OWADVL
quelle
für Swift 3 musste ich realm.pathzurealm.configuration.fileURL!.absoluteString
Andy
5

Wenn der Dialogfeldschlüssel "Verschlüsselungsschlüssel eingeben" angezeigt wird:

Ich verwende Swift 2.1 mit Realm 0.96.2 und habe beim Versuch, die Datenbankdatei zu öffnen, folgende Fehlermeldung erhalten:

'default' konnte nicht geöffnet werden. Es ist möglicherweise verschlüsselt oder hat kein kompatibles Dateiformat. Wenn Sie wissen, dass die Datei verschlüsselt ist, können Sie den Verschlüsselungsschlüssel manuell eingeben, um sie zu öffnen.

Es wurde festgestellt, dass die Verwendung der Vorabversion von Realm Browser 0.96 das Problem behoben hat:

https://github.com/realm/realm-browser-osx/releases/tag/0.96-prerelease

Sameer
quelle
3

Zunächst bestätige ich, dass dies ein Android-Thread ist, aber es ist das erste Suchergebnis für dieses Problem im Allgemeinen.

Um die zuletzt erstellte Xcode Simulator Realm-Datenbank im Realm-Browser zu öffnen, können Sie dieses Skript in Automator verwenden oder alles am Terminal eingeben. Mit Automator habe ich mit einem Klick Zugriff auf meinen aktuellen Bereich.

    cd ~/Library/Developer/CoreSimulator/Devices/
    cd `ls -t | head -n 1`/data/Containers/Data/Application
    cd `ls -t | head -n 1`/Documents    
    open -a 'Realm Browser' ./default.realm

Installieren Sie den Realm Browser. Klicken Sie in Automator auf Neu, wählen Sie Shell-Skript ausführen aus, fügen Sie Code ein, ändern Sie den Namen der Realm-Datenbank, klicken Sie zum Testen auf Ausführen und speichern Sie die Datei an einem geeigneten Ort für den schnellen Klickzugriff.

Ich weiß nicht, wo ich diesen Tipp zum ersten Mal gefunden habe, aber dieser Thread hat mich daran erinnert, wie ich in der Vergangenheit auf meine Live-Daten zugegriffen habe.

J. Roth
quelle
3

Nur für Ihre App ist auf dem iOS Simulator

Eingeben

console.log (Realm.defaultPath)

im Code zB: App.js.

leyliu.com
quelle
2

Ich bin noch einen Schritt weiter gegangen. Ich habe eine schnelle Datei namens RealmFunctions erstellt und darin diese Funktion erstellt

    import RealmSwift
    func realmAndPath() -> Realm {
        if dev {
            // location of my desktop
            return try! Realm(path: "/Users/slynch/Desktop/TestRealm.realm")
        } else {
            return try! Realm()
        }
    }

Jetzt habe ich in meinem Hauptansichts-Controller eine globale boolesche Variable namens dev

var dev: Bool = true // when in development mode
var dev: Bool = false // when I want to run on my device or upload to app stor.

Jetzt muss ich in meinem Code nur noch etwas tun

let realm = realmAndPath()

Im Entwicklungsmodus kann ich meine Realm-Datenbank auf meinem Desktop finden und im Realm-Browser öffnen.

Stewart Lynch
quelle
1
Fehler: (13, 21) Argumentbezeichnungen '(Pfad :)' stimmen nicht mit verfügbaren Überladungen überein, scheinen sich in den neueren Versionen geändert zu haben
OWADVL
2

Ich habe meine Realm-Datei gefunden, indem ich diesen Befehl im Terminal ausgegeben habe: sudo find / -name "*.realm" .

Hoffe das hilft!

teechap
quelle
2

In Swift

func getFilePath() -> URL? {
    let realm = try! Realm()
    return realm.configuration.fileURL
}
Mahmud Ahsan
quelle
1

Um den DB-Pfad für iOS zu erhalten, ist der einfachste Weg:

  1. Starten Sie Ihre App in einem Simulator
  2. Halten Sie es jederzeit im Debugger an
  3. Gehen Sie zur Konsole (wo Sie haben (lldb)) und geben Sie Folgendes ein:po RLMRealm.defaultRealmPath

Tada ... du hast den Pfad zu deiner Realm-Datenbank

denislexisch
quelle
1

Der richtige (lldb) Befehl lautet : Realm.Configuration.defaultConfiguration.path.

Kokotoni Wilf
quelle
1

Für diejenigen, die React Native verwenden und den Standardbereich verwenden:

Realm.defaultPath

Natividad Lara Diaz
quelle
Ich kann das nicht finden!
Ali Hesari
@ Natividad wo diesen Code setzen? Irgendwelche Vorschläge zum Abrufen einer Realm-Datei?
Bikram Thapa
@AliHesari hast du etw gefunden?
Bikram Thapa
componentDidMount() { console.log(Realm.defaultPath) }In meiner Komponente hat Realm für mich funktioniert. Überprüfen Sie anschließend die xcode-Konsole auf den Pfad.
Paul Schorey
0

Klicken Sie unter Extras -> Android-Gerätemonitor auf

Und unter Datei-Explorer. Suche nach den Apps. Und die Datei befindet sich unter Daten / Daten.

Spidey
quelle
0

Der richtige lldb-Befehl für Xcode 7, Swift 2.2+ lautet po Realm.Configuration.defaultConfiguration.path!

Marquis103
quelle
1
Das Mitglied wird nicht aufgerufen, pathsondern fileURL: Realm.Configuration.defaultConfiguration.fileURL!
Nburk
1
Sie sind richtig ... dies hat sich in Realm1.0 geändert ... Ich habe Version 0.98 verwendet, als ich darauf geantwortet habe ... Die richtige Antwort ist po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103
0

Schnelle 2.3-Lösung

Einfachere Lösung, die mit Realm-Updates nicht kaputt geht

    let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    print("App Path: \(dirPaths)")

Die .realm-Datei sollte sich in "Dokumente" befinden.

Apinho
quelle