Jak znaleźć plik królestwa?


239

Utworzyłem DB przez królestwo i nie mogę znaleźć pliku, ponieważ mój system operacyjny (Yosemite) nie ma folderu mobilnego w katalogu / private / var / mobile.

Jak powinienem uzyskać dostęp do mojego królestwa, aby uruchomić się w przeglądarce?

Krzyż wysłany z grup google


Sprawdź to . Ta metoda działa zarówno na urządzeniach zrootowanych, jak i nierootowanych.
krhitesh

Odpowiedzi:


474

Znajdowanie pliku dziedziny

Dla Android

Jak wyświetlić mój plik Realm w przeglądarce Realm?

Na iOS

Jeśli Twoja aplikacja jest na urządzeniu

Upewnij się, że urządzenie jest podłączone i przejdź do okna urządzeń w menu Xcode Okno> Urządzenia (⌘⇧2). Tam będziesz mógł wybrać swoje urządzenie i aplikację z listy zainstalowanych aplikacji z uprawnieniami do debugowania.

Po wybraniu aplikacji przejdź do koła zębatego na pasku narzędzi u dołu widoku tabeli i wybierz „Pobierz kontener…” . Tam będziesz mógł pobrać plik z lokalizacji dokumentów na komputer Mac. Zostanie zapisany jako pakiet xcappdata.

Gdy otworzysz ścieżkę lokalną w Finderze, w której ją zapisałeś, możesz z niej skorzystać, wybierając „Pokaż zawartość opakowania” w menu kontekstowym wyszukiwarki, po wybraniu pliku. Otworzy się nowe okno wyszukiwarki, w którym znajdziesz swoje królestwo w następującej ścieżce (np.): AppData / Documents / default.realm (katalog „/ private / var / mobile” jest ścieżką używaną przez iOS na system plików urządzenia.

Jeśli Twoja aplikacja jest na symulatorze

Przejdź do katalogu użytkownika:

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

Prawdopodobnie najłatwiejszym sposobem uzyskania bieżącej ścieżki domyślnej dziedziny jest wstrzymanie symulatora i wprowadzenie do konsoli LLDB:

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

Szybko, używając Realm Objective-C :
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

Swift za pomocą Realm Swift :
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

Lub jeśli masz RLMRealmpod ręką instancję, możesz użyć:
(lldb) po myRealm.configuration.fileURL

Następnie po prostu skopiuj tę ścieżkę, otwórz terminal i wpisz open [Wklej tutaj ścieżkę]

UWAGA: Na niektórych ścieżkach jest spacja, dlatego przed spacją należy użyć „\”

Narzędzia pomocnicze SimPholder

Jest to prawdopodobnie najszybszy sposób na znalezienie pliku aplikacji w symulatorze. Zainstaluj SimPholder . Umożliwi to dostęp do katalogu dokumentów aplikacji bezpośrednio z paska menu.

Uwaga Niektóre osoby wspomniały, że SimPholder zabrał ich do niewłaściwego folderu aplikacji symulatora, jeśli tak jest w Twoim przypadku, wydrukuj ścieżkę królestwa, wykonując powyższe kroki, drukując ścieżkę dziedziny.


1
po ostatniej aktualizacji pojawia się błąd, kiedy to robisz po RLMRealm.defaultRealmPath(). Mówicalled object type 'NSString *' is not a function or function pointer
carbonr

Mam ten sam problem, co @carbonr. Czy ktoś może pomóc?
denisleksja

2
Zastosowanie wersji C powyżej 0,97po [[RLMRealm defaultRealm]path]
AlexHsieh

5
Część tej odpowiedzi jest już nieaktualna. Oto najnowszy sposób na znalezienie pliku bazy danych dziedziny (default.realm) za pomocą RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase 30.04.16

1
Korzystając z metody RealmSwift, otrzymuję:error: use of undeclared identifier 'Realm'
Simon Bengtsson

122

Znalazłem najprostszy sposób na iOS / macOS (dla Swift 3 Xcode 8.3)

override func viewDidLoad() {

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

Następnie kod x zarejestruje poprawną ścieżkę, sprawdź poniższy ekran.

wprowadź opis zdjęcia tutaj

Teraz otwórz Finder i naciśnij + + G(polecenie + shift + G) i wklej ścieżkę, która rejestruje twój Xcode


10
ścieżka jest przestarzała. użyj Realm.Configuration.defaultConfiguration.fileURLzamiast
hewigovens

2
Zostało zmienione na Realm.configuration.fileURL
Reshad

3
swift 3, xcode8.3 działa również zRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

postępowałem zgodnie z tym samym procesem, ale nie mogę znaleźć ścieżki pliku w wyszukiwarce
RejoylinLokeshwaran,

1
Jest to idealne rozwiązanie dla symulatora, a gdy znajdziesz plik, wystarczy kliknąć cmd, aby „Otwórz z”, aby uruchomić Realm Studio. To nasuwa pytanie lub przemyślenie: Realm Studio potrzebuje opcji menu „Otwórz ostatnio” Plik!
zremisował ..

39

Jedna łatwa alternatywa dla aplikacji symulatora

Utwórz inteligentny folder / wyszukiwanie w Finderze. Zapewnia szybki i łatwy dostęp do wszystkich plików domeny.

  1. Otwórz folder /Users/$USER/Library/Developer/CoreSimulator/Devicesw Finderze.

    Z terminalem open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. Szukaj .realm

  3. Zmień wyszukiwanie, aby przeglądać "Devices"tylko folder.

  1. Zapisz wyszukiwanie na pasku bocznym (np. Jako Realms)

Po posortowaniu według daty daje to szybką i łatwą do kliknięcia listę najnowszych zmodyfikowanych .realmplików Symulatora .


Dzięki @Archdoog - niezły pomysł, kiedy przechodzisz przez wiele nowych projektów z Realm
Allen

4
Zapisywanie go jako wyszukiwania jest genialne! Dziękuję Ci! :)
karlingen,

22

Oto proste rozwiązanie .. Pomyślałem przez chwilę. Powinienem zaznaczyć, że jest to konkretny zestaw instrukcji korzystających z Android Studio i emulatora AVD.

1) Uruchom emulator i uruchom aplikację.

2) Gdy aplikacja jest nadal uruchomiona, otwórz Android Device Monitor. (znajduje się na pasku narzędzi obok ikon menedżera AVD i SDK)

3) Kliknij kartę Eksplorator plików w Monitorze urządzeń. Powinno być dużo folderów.

4) Przejdź następującą ścieżką: Dane> Dane> Nazwa Twojego pakietu > pliki> Default.Realm (lub jakkolwiek to nazwałeś)

Dawny. Jeśli używasz jednego z przykładowych projektów dziedziny, ścieżka może wyglądać następująco: Dane> Dane> io.realm.examples.realmgridview> pliki> default.realm

5) Podświetl plik, kliknij ikonę dyskietki w prawym górnym rogu „wyciągnij plik z urządzenia”

6) Zapisz to, gdziekolwiek chcesz i gotowe.


18

Zrobiłem to

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

a następnie jest tworzony w pełnym widoku na moim pulpicie i mogę kliknąć dwukrotnie, aby uruchomić na nim Realm Browser. Później mogę usunąć parametr i pozwolić mu użyć domyślnej lokalizacji, gdy jestem przekonany, że wszystko działa zgodnie z oczekiwaniami.


1
Pojawia się komunikat „Etykiety argumentów” (ścieżka :) „nie pasują do żadnych dostępnych przeciążeń”. Masz pomysł, dlaczego?
Marcelo Gracietti,

To po prostu niesamowite haha!
WilomGfx

Idealne do testowania na symulatorze, ale prawdopodobnie nie będzie działać poprawnie na prawdziwym urządzeniu.
Awaria

pozwól królestwu = spróbuj! Realm (plikURL: URL (ciąg: „/Users/[me]/Desktop/TestRealm.realm”)!)
Harris

11

Cel C - [RLMRealmConfiguration defaultConfiguration].fileURL

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

Eg- / Users / „Your-user-name” / Library / Developer / CoreSimulator / Devices / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / data / Containers / Data / Application / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Dokumenty /

Jest to najprostsze polecenie, które można uruchomić, aby uzyskać ścieżkę do pliku .realm. Zobaczysz plik .realm po zakończeniu wszystkich operacji odczytu i zapisu.

Lub

Możesz otworzyć openSim open source , alternatywę dla simpholderów, aby uzyskać dostęp do katalogu dokumentów aplikacji bezpośrednio z paska menu


11

W powyższych odpowiedziach brakuje sposobu na znalezienie pliku dziedziny na platformie Android i uwierz mi, że w ten sposób zaoszczędzisz mnóstwo czasu, który generalnie marnujemy na inne podejścia do uzyskania pliku dziedziny. A więc zacznijmy...

Najpierw otwórz „Device File Explorer” w Android studio (Widok -> Narzędzia Windows -> Device File Explorer.

Spowoduje to otwarcie eksploratora urządzenia.

wprowadź opis zdjęcia tutaj

teraz otwórz dane -> dane -> (twoja_aplikacja_aplikacji) -> pliki -> default.realm

default.realm to plik, dla którego tu jesteśmy. Teraz Save_as ten plik w swojej lokalizacji i uzyskaj dostęp do pliku z przeglądarki realm_browser, a otrzymasz bazę danych.

UWAGA: Wspomniane podejście jest testowane na telefonie niezrootowanym (jeden + 3).


10

Jeśli używasz domyślnej bazy danych Realm w symulatorze:

po Realm().configuration.fileURL

Czy możesz dodać jakieś szczegóły?
zeeshan

@zeeshan, zatrzymaj symulator podczas działania i wpisz polecenie, a następnie naciśnij klawisz enter.
superarts.org,

9

Zaktualizowana odpowiedź do najnowszej dziedziny:

Dla Android:

kasa stetho i https://github.com/uPhyca/stetho-realm Samouczek wideo tutaj: https://www.youtube.com/watch?v=9pFJz5VexRw

Dla IOS (Swift)

Zarówno:

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

lub

Krok 1: Poproś gdzieś stałą o nazwie dev. Powiedzmy, że plik Constant

public class Constants {

    public static var dev: Bool = true

}

Krok 2: Utwórz kolejną klasę o nazwie 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()
    }
}

Krok 3: w końcu w kontrolerze widoku:

let realm = realmAndPath()

dzięki Stewart Lynch za oryginalną odpowiedź


dla szybkiego 3 musiałem zmienić realm.pathnarealm.configuration.fileURL!.absoluteString
Andy

5

Jeśli pojawia się błąd okna dialogowego „Wprowadź klucz szyfrowania”:

Używam Swift 2.1 z Realm 0.96.2 i otrzymywałem ten błąd podczas próby otwarcia pliku bazy danych:

Nie można otworzyć „default”. Może być zaszyfrowany lub nie ma zgodnego formatu pliku. Jeśli wiesz, że plik jest zaszyfrowany, możesz ręcznie wprowadzić jego klucz szyfrowania, aby go otworzyć.

Stwierdzono, że użycie przedpremierowej wersji Realm Browser 0.96 rozwiązało problem:

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


3

Po pierwsze, potwierdzam, że jest to wątek na Androida, ale ogólnie jest to pierwszy wynik wyszukiwania tego problemu.

Aby otworzyć ostatnio utworzoną bazę danych Xcode Simulator Realm w przeglądarce Realm Browser, możesz użyć tego skryptu w Automatorze lub wpisać wszystko w terminalu. Korzystając z Automatora, mam dostęp do mojej aktualnej dziedziny jednym kliknięciem.

    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

Zainstaluj Realm Browser. W Automatorze kliknij Nowy, wybierz Uruchom skrypt powłoki, wklej kod, zmień nazwę dziedziny Db, Kliknij Uruchom, aby przetestować, zapisz plik w dogodnym miejscu, aby uzyskać szybki dostęp do kliknięcia.

Nie wiem, gdzie pierwszy raz znalazłem tę wskazówkę, ale ten wątek przypomniał mi, jak uzyskiwałem dostęp do moich danych na żywo w przeszłości.


3

Tylko dla Twojej aplikacji jest na iOS Simulator

Wchodzić

console.log (Realm.defaultPath)

w kodzie np.: App.js


2

Zrobiłem ten krok dalej. Utworzyłem szybki plik o nazwie RealmFunctions, w którym utworzyłem tę funkcję

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

Teraz w moim głównym kontrolerze widoku mam globalną zmienną logiczną o nazwie 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.

Teraz wszystko, co muszę zrobić w kodzie, to

let realm = realmAndPath()

Tak więc w trybie programowania mogę znaleźć bazę danych dziedzin na pulpicie i otworzyć ją w przeglądarce dziedzin.


1
Błąd: (13, 21) argumentów etykiety „(ścieżka :)” nie pasują do żadnych dostępnych przeciążeń, wygląda na to, że zmieniły się w nowszych wersjach
OWADVL,

2

Znalazłem plik królestwa, wydając następującą komendę w Terminalu: sudo find / -name "*.realm" .

Mam nadzieję że to pomoże!


2

W Swift

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

1

Aby uzyskać ścieżkę DB dla iOS, najprostszym sposobem jest:

  1. Uruchom aplikację w symulatorze
  2. Zatrzymaj go w dowolnym momencie w debuggerze
  3. Przejdź do konsoli (gdzie masz (lldb)) i wpisz:po RLMRealm.defaultRealmPath

Tada ... masz ścieżkę do bazy danych królestwa



1

Dla tych, którzy używają React Native i używają domyślnej dziedziny:

Realm.defaultPath


Nie mogę tego znaleźć!
Ali Hesari

@Natividad gdzie umieścić ten kod? jakieś sugestie dotyczące uzyskania pliku dziedziny?
Bikram Thapa,

@AliHesari znalazłeś coś?
Bikram Thapa,

componentDidMount() { console.log(Realm.defaultPath) }w moim komponencie przy użyciu Realm działało dla mnie. Sprawdź później konsolę xcode.
Paul Schorey

0

W obszarze Narzędzia -> Monitor urządzeń z systemem Android

I w Eksploratorze plików. Wyszukaj aplikacje. Plik znajduje się w obszarze danych / danych.


0

Prawidłowe polecenie lldb dla Xcode 7, Swift 2.2+ to po Realm.Configuration.defaultConfiguration.path!


1
członek nie jest wywołaniem, pathale fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk

1
masz rację ... to zmieniło się w dziedzinie 1.0 ... użyłem wersji 0.98, kiedy odpowiedziałem na to ... poprawna odpowiedź to po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Rozwiązanie Swift 2.3

Łatwiejsze rozwiązanie, które nie zepsuje się dzięki aktualizacjom Realm

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

Plik .realm powinien znajdować się w „Dokumentach”

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.