¿Cómo encontrar mi archivo de reino?


239

He creado una base de datos por reino y no puedo encontrar el archivo ya que mi sistema operativo (Yosemite) no tiene una carpeta móvil en / private / var / mobile.

¿Cómo debo acceder a mi reino para ejecutar en el navegador?

Cruz publicado desde grupos de google


Mira esto . Este método funciona tanto para dispositivos rooteados como no rooteados.
krhitesh

Respuestas:


474

Encontrar un archivo de reino

Para Android

¿Cómo ver mi archivo Realm en el navegador Realm?

Para iOS

Si su aplicación está en el dispositivo

Asegúrese de que su dispositivo esté conectado y vaya a la ventana de dispositivos en el menú Xcode Ventana> Dispositivos (⌘⇧2). Allí podrá elegir su dispositivo y su aplicación de una lista de aplicaciones instaladas con permisos de depuración.

Después de seleccionar su aplicación, vaya al engranaje en la barra de herramientas en la parte inferior de la vista de tabla y seleccione "Descargar contenedor ..." . Allí podrá extraer el archivo de la ubicación de los documentos a su Mac. Se guardará como un paquete xcappdata.

Cuando abre la ruta local en Finder, donde la guardó, puede aprovecharla seleccionando "Mostrar contenido del paquete" en el menú contextual del buscador, cuando selecciona el archivo. Se abrirá una nueva ventana de búsqueda, donde encontrará su Reino dentro de la siguiente ruta (por ejemplo): AppData / Documents / default.realm (El directorio '/ private / var / mobile' es la ruta, que es utilizada por iOS en el sistema de archivos del dispositivo.

Si tu aplicación está en el simulador

Vaya al directorio de su usuario:

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

Probablemente la forma más fácil de obtener la ruta actual del reino predeterminado es pausar el simulador e ingresar lo siguiente en la consola LLDB:

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

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

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

O si tiene una RLMRealminstancia a mano, puede usar:
(lldb) po myRealm.configuration.fileURL

Luego simplemente copie esta ruta, abra su terminal y escriba open [Ruta pegada aquí]

NOTA: Algunas rutas tienen un espacio, así que asegúrese de usar "\" antes del espacio para escapar.

Portaherramientas SimPholders

Esta es probablemente la forma más rápida de encontrar el archivo de una aplicación en el simulador. Instalar SimPholders . Esto le permitirá acceder al directorio de documentos de su aplicación directamente desde su barra de menú.

Nota Algunas personas han mencionado que SimPholders los ha llevado a la carpeta de la aplicación del simulador incorrecta, si ese es el caso, imprima la ruta de su reino siguiendo los pasos anteriores e imprima su ruta de dominio.


1
después de la última actualización hay un error cuando lo haces po RLMRealm.defaultRealmPath(). Dicecalled object type 'NSString *' is not a function or function pointer
carbonr

Tengo el mismo problema que @carbonr. ¿Alguien puede ayudar?
denislexic

2
Versión Objective-C superior a 0.97 usopo [[RLMRealm defaultRealm]path]
AlexHsieh

55
Parte de esta respuesta está desactualizada ahora. Aquí está la forma más reciente de encontrar su archivo de base de datos de dominio (default.realm) usando RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase

1
Usando el método RealmSwift obtengo lo siguiente:error: use of undeclared identifier 'Realm'
Simon Bengtsson

122

Encontré la forma más simple para iOS / macOS (para swift 3 Xcode 8.3)

override func viewDidLoad() {

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

Luego, el código x registrará la ruta correcta, verifique la pantalla a continuación.

ingrese la descripción de la imagen aquí

Ahora abra su Finder y presione + + G(comando + shift + G) y pegue la ruta que inicia sesión en su Xcode


10
La ruta está en desuso. utilizar Realm.Configuration.defaultConfiguration.fileURLen su lugar
hewigovens

2
Se ha cambiado a Realm.configuration.fileURL
Reshad el

3
swift 3, xcode8.3 también funciona conRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

Seguí el mismo proceso pero no puedo encontrar la ruta del archivo en el buscador
RejoylinLokeshwaran

1
Esto es perfecto para el simulador y una vez que encuentre su archivo, es un simple clic con el botón cmd "Abrir con" para iniciar Realm Studio. Esto plantea la pregunta o el pensamiento: ¡Realm Studio necesita una opción de menú de archivo "abrir reciente"!
Dibujó ..

39

Una alternativa fácil para aplicaciones de simulador

Cree una carpeta / búsqueda inteligente en Finder. Otorga acceso fácil y rápido a todos sus archivos de dominio.

  1. Abre la carpeta /Users/$USER/Library/Developer/CoreSimulator/Devicesen Finder.

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

  2. Buscar .realm

  3. Cambie la búsqueda para buscar solo en la "Devices"carpeta.

  1. Guarde la búsqueda en su barra lateral (por ejemplo, como Reinos)

Cuando se ordena por fecha, esto le dará una lista rápida y fácil de hacer clic de los últimos .realmarchivos de Simulator modificados .


Gracias @Archdoog - no es una mala idea cuando estás pasando por muchos proyectos nuevos con Realm
Allen

44
¡Guardarlo como una búsqueda es genial! ¡Gracias! :)
karlingen

22

Aquí hay una solución fácil ... Me metí con esto por un tiempo. Debo señalar que este es un conjunto específico de instrucciones que usan Android Studio y el emulador AVD.

1) Inicie el emulador y ejecute su aplicación.

2) Mientras la aplicación aún se está ejecutando, abra el Monitor de dispositivo Android. (está en la barra de herramientas al lado de los iconos del administrador de AVD y SDK)

3) Haga clic en la pestaña Explorador de archivos en el Monitor de dispositivo. Debería haber muchas carpetas.

4) Navegue por la siguiente ruta: Datos> Datos> Nombre del paquete > archivos> Default.Realm (o lo que sea que lo haya nombrado)

Ex. Si está utilizando uno de los proyectos de ejemplo de reino, la ruta sería algo así como Datos> Datos> io.realm.examples.realmgridview> archivos> default.realm

5) Resalte el archivo, haga clic en el icono del disquete en el área superior derecha "extraiga un archivo del dispositivo"

6) Guárdelo en el lugar que desee y listo.


18

Lo que hice fue usar

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

y luego se crea en vista completa en mi escritorio y puedo hacer doble clic para iniciar el navegador Realm en él. Más tarde, puedo eliminar el parámetro y dejar que use la ubicación predeterminada cuando esté satisfecho de que todo funcione como se esperaba.


1
Aparece un error que dice "Las etiquetas de argumento '(ruta :)' no coinciden con ninguna sobrecarga disponible". ¿Alguna idea de por qué?
Marcelo Gracietti

Eso es simplemente increíble jaja!
WilomGfx

Excelente para probar en el simulador, pero probablemente no funcionará correctamente en un dispositivo real.
Mal funcionamiento

let realm = ¡inténtalo! Realm (fileURL: URL (cadena: "/Users/[mefont>/Desktop/TestRealm.realm")!
Harris

11

C objetivo - [RLMRealmConfiguration defaultConfiguration].fileURL

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

Por ejemplo, / Users / "Your-user-name" / Library / Developer / CoreSimulator / Devices / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / data / Containers / Data / Application / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Documents / /

Este es el comando más simple que puede ejecutar para obtener su ruta al archivo .realm. Verá el archivo .realm después de completar todas sus operaciones de lectura y escritura.

O

Puede abrir el código abierto openSim , alternativa de los simpholders para acceder al directorio de documentos de su aplicación directamente desde su barra de menú


11

Las respuestas anteriores faltan una manera de encontrar el archivo de dominio en la plataforma Android y créanme de esta manera le ahorrará mucho tiempo, que generalmente desperdiciamos en otros enfoques para obtener el archivo de dominio. Entonces comencemos ...

Primero abra "Device File Explorer" en Android Studio (Ver -> Herramientas Windows -> Device File Explorer.

Esto abrirá el explorador de tu dispositivo.

ingrese la descripción de la imagen aquí

ahora abre datos -> datos -> (your_app_package_name) -> archivos -> default.realm

default.realm es el archivo para el que estamos aquí. Ahora guarde este archivo en su ubicación y acceda al archivo desde el navegador de dominio y obtendrá su base de datos.

NOTA: El enfoque mencionado se prueba en un teléfono no rooteado (uno + 3).


10

Si está utilizando el Realm DB predeterminado en el simulador:

po Realm().configuration.fileURL

¿Puedes agregar algunos detalles?
zeeshan

@zeeshan, detenga su simulador mientras se ejecuta, escriba el comando y luego presione Intro.
superarts.org

9

Respuesta actualizada al nuevo Reino:

Para Android:

consulte stetho y https://github.com/uPhyca/stetho-realm Video tutorial aquí: https://www.youtube.com/watch?v=9pFJz5VexRw

Para iOS (Swift)

Ya sea:

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

o

Paso 1: Tener una constante llamada dev en alguna parte. Digamos archivo constante

public class Constants {

    public static var dev: Bool = true

}

Paso 2: Cree otra clase llamada 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()
    }
}

Paso 3: finalmente en su controlador de vista:

let realm = realmAndPath()

gracias a Stewart Lynch por la respuesta original


para Swift 3 necesitaba cambiar realm.patharealm.configuration.fileURL!.absoluteString
Andy

5

Si obtiene el error del cuadro de diálogo 'Ingresar clave de cifrado':

Estoy usando Swift 2.1 con Realm 0.96.2 y recibí este error al intentar abrir el archivo de base de datos:

'default' no se pudo abrir. Puede estar encriptado o no está en un formato de archivo compatible. Si sabe que el archivo está encriptado, puede ingresar manualmente su clave de encriptación para abrirlo.

Descubrí que el uso de la versión preliminar del navegador Realm 0.96 solucionó el problema:

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


3

Primero, reconozco que este es un hilo de Android, pero es el primer resultado de búsqueda para este problema en general.

Para abrir la base de datos de Xcode Simulator Realm creada más recientemente en Realm Browser, puede usar este script en Automator o escribirlo todo en el terminal. Al usar Automator, tengo acceso con un clic a mi reino actual.

    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

Instala Realm Browser. En Automator, haga clic en Nuevo, seleccione Ejecutar script de Shell, pegue el código, cambie el nombre de Realm Db, haga clic en Ejecutar para probar, guarde el archivo en algún lugar conveniente para acceder rápidamente al clic.

No sé dónde encontré este consejo la primera vez, pero este hilo me recordó cómo estaba accediendo a mis datos en vivo en el pasado.


3

Solo para su aplicación está en el simulador de iOS

Entrar

console.log (Realm.defaultPath)

en el código, por ejemplo: App.js


2

He llevado esto un paso más allá. He creado un archivo rápido llamado RealmFunctions y en él he creado esta función.

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

Ahora en mi controlador de vista principal, tengo una variable booleana global llamada 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.

Ahora, todo lo que tengo que hacer en mi código es

let realm = realmAndPath()

Entonces, cuando estoy en modo de desarrollo, puedo encontrar mi base de datos de dominio en mi escritorio y puedo abrir en el navegador de dominio.


1
Error: (13, 21) las etiquetas de argumento '(ruta :)' no coinciden con ninguna sobrecarga disponible, parece que cambió en las versiones más recientes
OWADVL

2

He encontrado mi archivo ámbito mediante la emisión de este comando en el terminal: sudo find / -name "*.realm".

¡Espero que esto ayude!


2

En veloz

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

1

Para obtener la ruta DB para iOS, la forma más simple es:

  1. Inicia tu aplicación en un simulador
  2. Pausa en cualquier momento en el depurador
  3. Vaya a la consola (donde tiene (lldb)) y escriba:po RLMRealm.defaultRealmPath

Tada ... tienes el camino a la base de datos de tu reino


1

El comando correcto (LLDB) es: Realm.Configuration.defaultConfiguration.path.


1

Para aquellos que usan React Native y usan el reino predeterminado:

Realm.defaultPath


No puedo encontrar esto!
Ali Hesari

@Natividad, ¿dónde poner este código? alguna sugerencia sobre cómo obtener el archivo de reino?
Bikram Thapa

@AliHesari, ¿encontraste algo?
Bikram Thapa

componentDidMount() { console.log(Realm.defaultPath) }en mi componente, usar Realm funcionó para mí. Verifique la consola de xcode para ver la ruta después.
Paul Schorey

0

En Herramientas -> Monitor de dispositivo Android

Y debajo del Explorador de archivos. Busca las aplicaciones. Y el archivo está bajo datos / datos.


0

El comando lldb correcto para Xcode 7, Swift 2.2+ es po Realm.Configuration.defaultConfiguration.path!


1
el miembro no es llamado pathsino fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk

1
tienes razón ... esto cambió en el reino 1.0 ... Estaba usando la versión 0.98 cuando respondí esto ... la respuesta correcta es po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Solución Swift 2.3

Solución más fácil que no se romperá con las actualizaciones de Realm

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

El archivo .realm debe estar dentro de "Documentos"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.