Come trovare il mio file realm?


239

Ho creato un DB per reame e non riesco a trovare il file poiché il mio sistema operativo (Yosemite) non ha una cartella mobile in / private / var / mobile.

Come devo accedere al mio regno per essere eseguito nel browser?

Inserimento incrociato da gruppi di Google


Controllare questo fuori. Questo metodo funziona sia per i dispositivi rooted che per quelli non root.
Kritesh,

Risposte:


474

Trovare un file Realm

Per Android

Come visualizzare il mio file Realm nel Realm Browser?

Per iOS

Se l'app è sul dispositivo

Assicurati che il tuo dispositivo sia collegato e vai alla finestra dei dispositivi nel menu Xcode Finestra> Dispositivi (⌘⇧2). Lì potrai scegliere il tuo dispositivo e la tua app da un elenco di app installate con autorizzazioni di debug.

Dopo aver selezionato l'app, vai all'ingranaggio nella barra degli strumenti nella parte inferiore della vista tabella e seleziona "Scarica contenitore ..." . Lì sarai in grado di estrarre il file dalla posizione dei documenti sul tuo Mac. Verrà salvato come un bundle xcappdata.

Quando apri il percorso locale nel Finder, dove lo hai salvato, puoi toccarlo selezionando “Mostra contenuto pacchetto” nel menu contestuale del Finder, quando selezioni il file. Si aprirà una nuova finestra del Finder, dove troverai il tuo Reame all'interno nel seguente percorso (ad es.): AppData / Documents / default.realm (La directory '/ private / var / mobile' è il percorso, che è usato da iOS sul filesystem del dispositivo.

Se l'app è sul simulatore

Vai alla directory del tuo utente:

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

Probabilmente il modo più semplice per ottenere il percorso corrente del regno predefinito è mettere in pausa il simulatore e inserire quanto segue nella console LLDB:

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

Swift usando Realm Objective-C :
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

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

O se hai RLMRealmun'istanza a portata di mano, puoi usare:
(lldb) po myRealm.configuration.fileURL

Quindi copia questo percorso, apri il tuo terminale e digita open [Percorso incollato qui]

NOTA: alcuni percorsi contengono uno spazio, quindi assicurati di utilizzare "\" prima dello spazio per evitarlo

Strumenti di supporto SimPholder

Questo è probabilmente il modo più veloce per trovare il file di un'app nel simulatore. Installa SimPholders . Ciò ti consentirà di accedere alla directory dei documenti della tua app direttamente dalla barra dei menu.

Nota Alcune persone hanno detto che SimPholders li ha portati nella cartella dell'app simulatore sbagliata, se è il tuo caso, stampa il tuo percorso realm seguendo i passaggi precedenti, stampando realm.path


1
dopo l'ultimo aggiornamento c'è un errore quando lo fai po RLMRealm.defaultRealmPath(). Dicecalled object type 'NSString *' is not a function or function pointer
carbonr,

Ho lo stesso problema di @carbonr. Qualcuno può aiutare?
denislexic

2
La versione Objective-C sopra 0.97 usapo [[RLMRealm defaultRealm]path]
AlexHsieh il

5
Parte di questa risposta è obsoleta ora. Ecco il modo più recente per trovare il tuo file di database realm (default.realm) usando RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase

1
Utilizzando il metodo RealmSwift ottengo quanto segue:error: use of undeclared identifier 'Realm'
Simon Bengtsson,

122

Ho trovato il modo più semplice per iOS / macOS (per swift 3 Xcode 8.3)

override func viewDidLoad() {

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

Quindi x code registrerà il percorso corretto, controlla la schermata qui sotto.

inserisci qui la descrizione dell'immagine

Ora apri il tuo Finder e premi + + G(comando + maiusc + G) e incolla il percorso che accede al tuo Xcode


10
il percorso è obsoleto. usa Realm.Configuration.defaultConfiguration.fileURLinvece
hewigovens il

2
È stato modificato in Realm.configuration.fileURL
Reshad il

3
swift 3, xcode8.3 funziona anche conRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz il

ho seguito lo stesso processo ma non riesco a trovare il percorso del file nel finder
RejoylinLokeshwaran,

1
Questo è perfetto per il simulatore e, una volta trovato il tuo file, è facile fare clic su "Apri con" per avviare Realm Studio. Questo fa sorgere la domanda o il pensiero: Realm Studio ha bisogno di un'opzione di menu "Apri recenti"!
disegnò ..

39

Un'alternativa semplice per le app di simulazione

Crea una cartella / ricerca intelligente nel Finder. Fornisce un accesso facile e veloce a tutti i tuoi file realm.

  1. Apri la cartella /Users/$USER/Library/Developer/CoreSimulator/Devicesin Finder.

    Con terminale open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. Cercare .realm

  3. Modifica la ricerca per cercare solo nella "Devices"cartella.

  1. Salva la ricerca nella barra laterale (ad esempio come Reami)

Se ordinato in base alla data, questo ti fornirà un elenco cliccabile semplice e veloce degli ultimi .realmfile di Simulator modificati .


Grazie @Archdoog - non è una cattiva idea quando stai attraversando molti nuovi progetti con Realm
Allen

4
Salvarlo come una ricerca è geniale! Grazie! :)
karlingen,

22

Ecco una soluzione semplice .. Ho rovinato tutto per un po '. Dovrei sottolineare, questo è un insieme specifico di istruzioni che utilizza Android Studio e l'emulatore AVD.

1) Avvia l'Emulatore ed esegui la tua app.

2) Mentre l'app è ancora in esecuzione, apri Android Device Monitor. (è nella barra degli strumenti accanto alle icone del gestore AVD e SDK)

3) Fare clic sulla scheda Esplora file in Device Monitor. Dovrebbero esserci molte cartelle.

4) Naviga nel seguente percorso: Dati> Dati> Nome del tuo pacchetto > file> Default.Realm (o come lo hai chiamato)

Ex. Se stai usando uno dei progetti di esempio del regno, il percorso sarebbe qualcosa come Dati> Dati> io.realm.examples.realmgridview> file> default.realm

5) Evidenzia il file, fai clic sull'icona del dischetto nell'area in alto a destra "estrarre un file dal dispositivo"

6) Salvalo dove vuoi e fatto.


18

Quello che ho fatto è stato usare

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

e poi viene creato a piena vista sul mio desktop e posso fare doppio clic per avviare il Realm Browser su di esso. Successivamente, posso rimuovere il parametro e lasciarlo utilizzare la posizione predefinita quando sono soddisfatto che tutto funzioni come previsto.


1
Viene visualizzato un errore che dice "Le etichette degli argomenti" (percorso :) "non corrispondono ad alcun sovraccarico disponibile". Qualche idea sul perché?
Marcelo Gracietti,

Questo è semplicemente fantastico ahah!
WilomGfx

Ottimo per i test sul simulatore, ma probabilmente non funzionerà correttamente su un dispositivo reale.
Malfunzionamento

let realm = try! Realm (fileURL: URL (stringa: "/Users/[me[/Desktop/TestRealm.realm")!)
Harris,

11

Obiettivo-C - [RLMRealmConfiguration defaultConfiguration].fileURL

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

EG / Users / "Il tuo-nome-utente" / Library / Developer / CoreSimulator / Devices / E58645FF-90DE-434D-B2EB-/ dati / FA145EB6F2EA Contenitori / Dati / Applicazioni / E427BD21-2CB1-4F64-9ADF-/ Documenti 8742FF731209 /

Questo è il comando più semplice che puoi eseguire per ottenere il tuo percorso al file .realm. Vedrai il file .realm dopo che tutte le tue operazioni di lettura e scrittura sono state completate.

O

Puoi openSim open source , alternativa ai simpholder per accedere alla directory dei documenti della tua app direttamente dalla barra dei menu


11

Le risposte di cui sopra mancano di un modo per trovare il file realm nella piattaforma Android e credetemi in questo modo farà risparmiare molto tempo che generalmente perdiamo in altri approcci per ottenere il file realm. Quindi iniziamo...

Per prima cosa apri "Device File Explorer" in Android Studio (Visualizza -> Strumenti Windows -> Device File Explorer.

Questo aprirà il tuo dispositivo Explorer.

inserisci qui la descrizione dell'immagine

ora apri dati -> dati -> (nome_app_pacchetto) -> file -> default.realm

default.realm è il file per il quale siamo qui. Ora salva_come questo file nella tua posizione e accedi al file dal realm_browser e otterrai il tuo database.

NOTA: l'approccio menzionato viene testato su un telefono non rootato (uno + 3).


10

Se si utilizza il DB di Realm predefinito nel simulatore:

po Realm().configuration.fileURL

Puoi aggiungere qualche dettaglio?
Zeeshan,

@zeeshan si prega di mettere in pausa il simulatore durante l'esecuzione e digitare il comando, quindi premere Invio.
superarts.org

9

Risposta aggiornata al regno più recente:

Per Android:

controlla stetho e https://github.com/uPhyca/stetho-realm Tutorial video qui: https://www.youtube.com/watch?v=9pFJz5VexRw

Per IOS (Swift)

O:

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

o

Step 1: Avere una costante chiamata dev da qualche parte. Diciamo file costante

public class Constants {

    public static var dev: Bool = true

}

Passaggio 2: creare un'altra classe denominata 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()
    }
}

Passaggio 3: finalmente nel controller della vista:

let realm = realmAndPath()

grazie a Stewart Lynch per la risposta originale


per Swift 3 dovevo passare realm.patharealm.configuration.fileURL!.absoluteString
Andy,

5

Se viene visualizzato l'errore "Immettere la chiave di crittografia":

Sto usando Swift 2.1 con Realm 0.96.2 e ho riscontrato questo errore durante il tentativo di aprire il file di database:

'default' non può essere aperto. Potrebbe essere crittografato o non è in un formato di file compatibile. Se sai che il file è crittografato, puoi inserire manualmente la sua chiave di crittografia per aprirlo.

È stato riscontrato che l'utilizzo della versione non definitiva di Realm Browser 0.96 ha risolto il problema:

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


3

Innanzitutto, riconosco che si tratta di un thread Android ma è il primo risultato di ricerca per questo problema in generale.

Per aprire il db Realm di Xcode Simulator creato più di recente in Realm Browser è possibile utilizzare questo script in Automator o digitarlo tutto sul terminale. Utilizzando Automator, ho accesso con un clic al mio regno attuale.

    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

Installa Realm Browser. In Automator, fai clic su Nuovo, seleziona Esegui script shell, incolla codice, modifica nome Db realm, fai clic su Esegui per testare, salva il file in un punto comodo per l'accesso rapido.

Non so dove ho trovato questo suggerimento la prima volta, ma questa discussione mi ha ricordato come stavo accedendo ai miei dati live in passato.


3

Solo per la tua app è sul simulatore iOS

accedere

console.log (Realm.defaultPath)

nel codice ad esempio: App.js


2

Ho fatto un ulteriore passo avanti. Ho creato un file rapido chiamato RealmFunctions e in esso ho creato questa funzione

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

Ora nel mio controller della vista principale, ho una variabile booleana globale chiamata 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.

Ora, tutto ciò che devo fare nel mio codice è

let realm = realmAndPath()

Quindi quando sono in modalità di sviluppo, posso trovare il mio database realm sul mio desktop e posso aprire in Realm Browser.


1
Errore: (13, 21) le etichette degli argomenti '(percorso :)' non corrispondono ad alcun sovraccarico disponibile, sembra che sia cambiato nelle versioni più recenti
OWADVL

2

Ho trovato il mio file reame mediante l'emissione di questo comando nel terminale: sudo find / -name "*.realm".

Spero che questo ti aiuti!


2

In Swift

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

1

Per ottenere il percorso DB per iOS, il modo più semplice è:

  1. Avvia la tua app in un simulatore
  2. Metti in pausa in qualsiasi momento nel debugger
  3. Vai alla console (dove hai (lldb)) e digita:po RLMRealm.defaultRealmPath

Tada ... hai il percorso del tuo database realm


1

Il comando corretto (lldb) è: Realm.Configuration.defaultConfiguration.path.


1

Per quelli che usano React Native e usano il realm predefinito:

Realm.defaultPath


Non riesco a trovare questo!
Ali Hesari,

@Natividad dove mettere questo codice? qualche suggerimento su come ottenere il file realm?
Bikram Thapa,

@AliHesari hai trovato sth?
Bikram Thapa,

componentDidMount() { console.log(Realm.defaultPath) }nel mio componente usando Realm ha funzionato per me. Controlla la console xcode per il percorso successivo.
Paul Schorey,

0

Sotto Strumenti -> Monitor dispositivo Android

E in Esplora file. Cerca le app. E il file è in dati / dati.


0

Il comando lldb corretto per Xcode 7, Swift 2.2+ è po Realm.Configuration.defaultConfiguration.path!


1
il membro non è chiamato pathma fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk,

1
hai ragione ... questo è cambiato in realm1.0 ... stavo usando la versione 0.98 quando ho risposto a questa ... la risposta corretta è po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Soluzione Swift 2.3

Soluzione più semplice che non si romperà con gli aggiornamenti di Realm

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

Il file .realm dovrebbe essere all'interno di "Documenti"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.