Comment trouver mon fichier de domaine?


239

J'ai créé une base de données par domaine et je ne trouve pas le fichier car mon système d'exploitation (Yosemite) n'a pas de dossier mobile dans / private / var / mobile.

Comment dois-je accéder à mon domaine pour fonctionner dans le navigateur?

Croix publiée par des groupes Google


Regardez ça . Cette méthode fonctionne pour les appareils rootés et non rootés.
krhitesh

Réponses:


474

Recherche d'un fichier de domaine

Pour Android

Comment afficher mon fichier de domaine dans le navigateur de domaine?

Pour iOS

Si votre application est sur l'appareil

Assurez-vous que votre appareil est connecté et accédez à la fenêtre des appareils dans le menu Xcode Fenêtre> Appareils (⌘⇧2). Là, vous pourrez choisir votre appareil et votre application dans une liste d'applications installées avec des autorisations de débogage.

Après avoir sélectionné votre application, accédez au rouage dans la barre d'outils en bas de la vue du tableau et sélectionnez «Télécharger le conteneur…» . Là, vous pourrez extraire le fichier de l'emplacement des documents vers votre Mac. Il sera enregistré en tant que bundle xcappdata.

Lorsque vous ouvrez le chemin local dans le Finder, où vous l'avez enregistré, vous pouvez y accéder en sélectionnant «Afficher le contenu du package» dans le menu contextuel du Finder, lorsque vous sélectionnez le fichier. Une nouvelle fenêtre de recherche s'ouvrira, où vous trouverez votre domaine à l'intérieur dans le chemin suivant (par exemple): AppData / Documents / default.realm (Le répertoire '/ private / var / mobile' est le chemin, qui est utilisé par iOS sur le système de fichiers du périphérique.

Si votre application est sur le simulateur

Accédez au répertoire de votre utilisateur:

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

Le moyen le plus simple d'obtenir le chemin actuel du domaine par défaut est probablement de mettre le simulateur en pause et de saisir les informations suivantes dans la console LLDB:

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

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

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

Ou si vous avez une RLMRealminstance à portée de main, vous pouvez utiliser:
(lldb) po myRealm.configuration.fileURL

Ensuite, copiez simplement ce chemin, ouvrez votre terminal et tapez open [Chemin collé ici]

Remarque: certains chemins ont un espace en eux donc assurez-vous d'utiliser "\" avant l'espace pour y échapper

HelP Tool SimPholders

C'est probablement le moyen le plus rapide pour trouver le fichier d'une application dans le simulateur. Installez SimPholders . Cela vous permettra d'accéder au répertoire de documents de votre application directement depuis votre barre de menus.

Remarque Certaines personnes ont mentionné que SimPholders les avait prises dans le mauvais dossier d'application du simulateur, si c'est le cas pour vous, imprimez votre chemin de domaine en suivant les étapes ci-dessus, en imprimant votre domaine.


1
après la dernière mise à jour, il y a une erreur lorsque vous le faites po RLMRealm.defaultRealmPath(). Il ditcalled object type 'NSString *' is not a function or function pointer
carbonr

J'ai le même problème que @carbonr. Quelqu'un peut-il aider?
denislexic

2
Version Objective-C supérieure à 0.97po [[RLMRealm defaultRealm]path]
AlexHsieh

5
Une partie de cette réponse est désormais dépassée. Voici la façon la plus récente de trouver votre fichier de base de données de domaine (default.realm) à l'aide de RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase

1
En utilisant la méthode RealmSwift, j'obtiens ce qui suit:error: use of undeclared identifier 'Realm'
Simon Bengtsson

122

J'ai trouvé le moyen le plus simple pour iOS / macOS (pour swift 3 Xcode 8.3)

override func viewDidLoad() {

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

Ensuite, le code x enregistrera le chemin correct, vérifiez l'écran ci-dessous.

entrez la description de l'image ici

Maintenant, ouvrez votre Finder et appuyez sur + + G(commande + Maj + G) et collez le chemin qui se connecte à votre Xcode


10
chemin est obsolète. utiliser à la Realm.Configuration.defaultConfiguration.fileURLplace
hewigovens

2
Son été changé en Realm.configuration.fileURL
Reshad

3
swift 3, xcode8.3 fonctionne également avecRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

j'ai suivi le même processus mais je ne peux pas trouver le chemin du fichier dans le finder
RejoylinLokeshwaran

1
C'est parfait pour le simulateur et une fois que vous avez trouvé votre fichier, c'est un simple cmd-clic pour "Ouvrir avec" pour lancer Realm Studio. Cela soulève la question ou la pensée: Realm Studio a besoin d'une option de menu Fichier "Ouvrir récent"!
attiré ..

39

Une alternative facile pour les applications de simulation

Créez un dossier intelligent / recherche dans le Finder. Donne un accès cliquable rapide et facile à tous vos fichiers de domaine.

  1. Ouvrez le dossier /Users/$USER/Library/Developer/CoreSimulator/Devicesdans le Finder.

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

  2. Rechercher .realm

  3. Modifiez la recherche pour rechercher "Devices"uniquement dans le dossier.

  1. Enregistrez la recherche dans votre barre latérale (par exemple en tant que royaumes)

Une fois trié par date, cela vous donnera une liste cliquable rapide et facile des derniers .realmfichiers Simulator modifiés .


Merci @Archdoog - pas une mauvaise idée lorsque vous passez par de nombreux nouveaux projets avec Realm
Allen

4
L'enregistrer en tant que recherche est un génie! Je vous remercie! :)
karlingen

22

Voici une solution facile .. J'ai joué avec ça pendant un moment. Je dois souligner qu'il s'agit d'un ensemble d'instructions spécifiques utilisant Android Studio et l'émulateur AVD.

1) Démarrez l'émulateur et exécutez votre application.

2) Pendant que l'application est toujours en cours d'exécution, ouvrez le Android Device Monitor. (c'est dans la barre d'outils à côté des icônes du gestionnaire AVD et SDK)

3) Cliquez sur l'onglet Explorateur de fichiers dans le Moniteur de périphériques. Il devrait y avoir beaucoup de dossiers.

4) Naviguez dans le chemin suivant: Données> Données> Nom de votre package > fichiers> Default.Realm (ou ce que vous avez nommé)

Ex. Si vous utilisez l'un des exemples de projets de domaine, le chemin d'accès serait quelque chose comme Data> Data> io.realm.examples.realmgridview> files> default.realm

5) Mettez en surbrillance le fichier, cliquez sur l'icône de la disquette dans la zone supérieure droite "extraire un fichier du périphérique"

6) Enregistrez-le où vous voulez et faites.


18

J'ai utilisé

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

puis il est créé en plein écran sur mon bureau et je peux double-cliquer pour lancer le navigateur de domaine dessus. Plus tard, je peux supprimer le paramètre et le laisser utiliser l'emplacement par défaut lorsque je suis convaincu que tout fonctionne comme prévu.


1
J'obtiens une erreur disant "Les étiquettes d'argument '(chemin :)' ne correspondent à aucune surcharge disponible". Une idée pourquoi?
Marcelo Gracietti

C'est tout simplement incroyable haha!
WilomGfx

Idéal pour les tests sur le simulateur, mais ne fonctionnera probablement pas correctement sur un vrai appareil.
Dysfonctionnement le

laissez le royaume = essayer! Realm (fileURL: URL (string: "/Users/[me[/Desktop/TestRealm.realm")!)
Harris

11

Objectif c - [RLMRealmConfiguration defaultConfiguration].fileURL

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

Par exemple- / Utilisateurs / "Votre-nom-d'utilisateur" / Bibliothèque / Développeur / CoreSimulator / Périphériques / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / données / Conteneurs / Données / Application / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Documents /

Il s'agit de la commande la plus simple que vous pouvez exécuter pour obtenir votre chemin d'accès au fichier .realm. Vous verrez le fichier .realm une fois toutes vos opérations de lecture et d'écriture terminées.

Ou

Vous pouvez vous open source openSim , alternative de simpholders pour accéder au répertoire de documents de votre application directement depuis votre barre de menu


11

Les réponses ci-dessus manquent un moyen de trouver le fichier de domaine dans la plate-forme Android et croyez-moi, cela vous fera gagner beaucoup de temps que nous gaspillons généralement dans d'autres approches pour obtenir le fichier de domaine. Commençons donc ...

Ouvrez d'abord "Device File Explorer" dans Android Studio (Affichage -> Outils Windows -> Device File Explorer.

Cela ouvrira l'explorateur de votre appareil.

entrez la description de l'image ici

Ouvert data -> data -> (your_app_package_name) -> files -> default.realm

default.realm est le fichier pour lequel nous sommes ici. Maintenant, sauvegardez ce fichier à votre emplacement et accédez au fichier à partir de realm_browser et vous obtiendrez votre base de données.

REMARQUE: L'approche mentionnée est testée sur un téléphone non rooté (un + 3).


10

Si vous utilisez la base de données de domaine par défaut dans le simulateur:

po Realm().configuration.fileURL

Pouvez-vous ajouter quelques détails?
zeeshan

@zeeshan veuillez mettre votre simulateur en pause pendant l'exécution et tapez la commande, puis appuyez sur entrée.
superarts.org

9

Réponse mise à jour au nouveau royaume:

Pour Android:

checkout stetho et https://github.com/uPhyca/stetho-realm Tutoriel vidéo ici: https://www.youtube.com/watch?v=9pFJz5VexRw

Pour IOS (Swift)

Soit:

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

ou

Étape 1: Ayez une constante appelée dev quelque part. Disons fichier constant

public class Constants {

    public static var dev: Bool = true

}

Étape 2: créez une autre classe appelée 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()
    }
}

Étape 3: enfin dans votre contrôleur de vue:

let realm = realmAndPath()

merci à Stewart Lynch pour la réponse originale


pour swift 3, je devais changer realm.pathpourrealm.configuration.fileURL!.absoluteString
Andy

5

Si vous obtenez une erreur de boîte de dialogue «Entrer la clé de chiffrement»:

J'utilise Swift 2.1 avec Realm 0.96.2 et j'obtenais cette erreur en essayant d'ouvrir le fichier de base de données:

'default' n'a pas pu être ouvert. Il peut être crypté ou il n'est pas dans un format de fichier compatible. Si vous savez que le fichier est crypté, vous pouvez saisir manuellement sa clé de cryptage pour l'ouvrir.

J'ai constaté que l'utilisation de la version préliminaire du navigateur de domaine 0.96 corrigeait le problème:

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


3

Tout d'abord, je reconnais qu'il s'agit d'un fil Android, mais c'est le premier résultat de recherche pour ce problème en général.

Pour ouvrir la base de données Xcode Simulator Realm db la plus récente dans Realm Browser, vous pouvez utiliser ce script dans Automator ou tout taper sur le terminal. En utilisant Automator, j'ai un accès en un clic à mon domaine actuel.

    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

Installez le navigateur de domaine. Dans Automator, cliquez sur Nouveau, sélectionnez Exécuter le script Shell, collez le code, modifiez le nom de la base de données du domaine, cliquez sur Exécuter pour tester, enregistrez le fichier à un endroit pratique pour un accès rapide par clic.

Je ne sais pas où j'ai trouvé cette astuce la première fois, mais ce fil m'a rappelé comment j'accédais à mes données en direct dans le passé.


3

Juste pour votre application est sur le simulateur iOS

Entrer

console.log (Realm.defaultPath)

dans le code par exemple: App.js


2

Je suis allé encore plus loin. J'ai créé un fichier rapide appelé RealmFunctions et j'ai créé cette fonction

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

Maintenant, dans mon contrôleur de vue principal, j'ai une variable booléenne globale appelée 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.

Maintenant, tout ce que j'ai à faire dans mon code est

let realm = realmAndPath()

Donc, en mode développement, je peux trouver ma base de données de domaine sur mon bureau et ouvrir dans le navigateur de domaine.


1
Erreur: (13, 21) les étiquettes d'argument '(chemin :)' ne correspondent à aucune surcharge disponible, semble avoir changé dans les versions plus récentes
OWADVL

2

J'ai trouvé mon dossier de domaine en utilisant cette commande dans le Terminal: sudo find / -name "*.realm".

J'espère que cela t'aides!


2

Dans Swift

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

1

Pour obtenir le chemin DB pour iOS, le moyen le plus simple consiste à:

  1. Lancez votre application dans un simulateur
  2. Mettez-le en pause à tout moment dans le débogueur
  3. Accédez à la console (où vous en avez (lldb)) et tapez:po RLMRealm.defaultRealmPath

Tada ... vous avez le chemin vers votre base de données de domaine


1

La commande correcte (LLDB) est la suivante : Realm.Configuration.defaultConfiguration.path.


1

Pour ceux qui utilisent React Native et utilisent le domaine par défaut:

Realm.defaultPath


Je ne trouve pas ça!
Ali Hesari

@Natividad où mettre ce code? des suggestions pour obtenir un fichier de domaine?
Bikram Thapa

@AliHesari avez-vous trouvé qc?
Bikram Thapa

componentDidMount() { console.log(Realm.defaultPath) }dans mon composant en utilisant Realm a fonctionné pour moi. Vérifiez ensuite le chemin de la console xcode.
Paul Schorey

0

Sous Outils -> Android Device Monitor

Et sous Explorateur de fichiers. Recherchez les applications. Et le fichier est sous données / données.


0

La commande lldb correcte pour Xcode 7, Swift 2.2+ est po Realm.Configuration.defaultConfiguration.path!


1
le membre n'est pas appelé pathmais fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk

1
vous avez raison ... cela a changé dans realm1.0 ... j'utilisais la version 0.98 quand j'ai répondu à cela ... la bonne réponse est po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Solution Swift 2.3

Solution plus simple qui ne cassera pas avec les mises à jour de Realm

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

Le fichier .realm doit se trouver dans "Documents"

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.