Bagaimana cara menemukan file ranah saya?


239

Saya telah membuat DB secara realm dan saya tidak dapat menemukan file karena OS saya (Yosemite) tidak memiliki folder ponsel di / private / var / mobile.

Bagaimana saya harus mengakses ranah saya untuk berjalan di browser?

Lintas diposting dari grup google


Lihat ini . Metode ini berfungsi untuk perangkat yang di-rooting dan tidak di-root.
krhitesh

Jawaban:


474

Menemukan File Realm

Untuk Android

Bagaimana cara melihat file Realm saya di Browser Realm?

Untuk iOS

Jika Aplikasi Anda ada di Perangkat

Pastikan perangkat Anda terhubung dan pergi ke jendela perangkat di menu Xcode Jendela> Perangkat (⌘⇧2). Di sana Anda akan dapat memilih perangkat dan aplikasi Anda dari daftar aplikasi yang terinstal dengan izin debugging.

Setelah memilih aplikasi Anda, buka roda gigi di bilah alat di bagian bawah tampilan tabel dan pilih "Unduh Wadah ..." . Di sana Anda akan dapat menarik file dari lokasi dokumen ke Mac Anda. Ini akan disimpan sebagai bundel xcappdata.

Ketika Anda membuka jalur lokal di Finder, tempat Anda menyimpannya, Anda dapat memanfaatkannya dengan memilih "Tampilkan Isi Paket" di menu konteks finder, ketika Anda memilih file. Jendela pencari baru akan terbuka, di mana Anda menemukan Realm Anda di dalam di jalur berikut (misalnya): AppData / Documents / default.realm (Direktori '/ private / var / mobile' adalah jalur, yang digunakan oleh iOS pada sistem file perangkat.

Jika Aplikasi Anda ada di Simulator

Buka direktori pengguna Anda:

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

Mungkin cara termudah untuk mendapatkan jalur saat ini dari ranah default adalah dengan menjeda simulator dan memasukkan yang berikut ini ke konsol LLDB:

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

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

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

Atau jika Anda memiliki RLMRealminstance, Anda dapat menggunakan:
(lldb) po myRealm.configuration.fileURL

Kemudian cukup salin jalur ini, buka terminal Anda, dan ketik open [Jalur yang disisipkan di sini]

CATATAN: Beberapa jalur memiliki ruang di dalamnya jadi pastikan untuk menggunakan "\" sebelum ruang untuk menghindarinya

SimPholder Alat Penolong

Ini mungkin cara tercepat untuk menemukan file aplikasi di simulator. Instal SimPholder . Ini akan memungkinkan Anda untuk mengakses direktori dokumen aplikasi Anda langsung dari bilah menu.

Catatan Beberapa orang telah menyebutkan bahwa SimPholder telah membawa mereka ke folder aplikasi simulator yang salah, jika itu masalahnya, cetak jalur ranah Anda dengan mengikuti langkah-langkah di atas, cetak ranah Anda.


1
setelah pembaruan terbaru ada kesalahan saat kamu melakukannya po RLMRealm.defaultRealmPath(). Dikatakancalled object type 'NSString *' is not a function or function pointer
carbonr

Saya memiliki masalah yang sama dengan @carbonr. Adakah yang bisa membantu?
denislexic

2
Versi Objective-C di atas 0,97 digunakanpo [[RLMRealm defaultRealm]path]
AlexHsieh

5
Sebagian dari jawaban ini sudah usang sekarang. Berikut adalah cara terbaru untuk menemukan file basis data realm Anda (default.realm) menggunakan RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase

1
Menggunakan metode RealmSwift saya mendapatkan yang berikut:error: use of undeclared identifier 'Realm'
Simon Bengtsson

122

Saya menemukan cara paling sederhana untuk iOS / macOS (untuk swift 3 Xcode 8.3)

override func viewDidLoad() {

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

Kemudian kode x akan mencatat jalur yang benar, periksa layar di bawah ini.

masukkan deskripsi gambar di sini

Sekarang buka Finder Anda dan tekan + + G(perintah + shift + G) dan rekatkan path yang mencatat Xcode Anda


10
jalan sudah ditinggalkan. gunakan Realm.Configuration.defaultConfiguration.fileURLsebagai gantinya
hewigovens

2
Sudah diubah ke Realm.configuration.fileURL
Reshad

3
swift 3, xcode8.3 juga bekerja denganRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

saya mengikuti proses yang sama tetapi saya tidak dapat menemukan path file di finder
RejoylinLokeshwaran

1
Ini sangat cocok untuk simulator dan setelah Anda menemukan file Anda, itu adalah cmd-klik mudah untuk "Buka Dengan" untuk menjalankan Realm Studio. Ini menimbulkan pertanyaan atau pemikiran: Realm Studio membutuhkan opsi menu File "terbuka baru-baru ini"!
menggambar ..

39

Satu Alternatif Mudah Untuk Aplikasi Simulator

Buat folder pintar / cari di Finder. Memberikan akses yang dapat diklik dengan cepat dan mudah ke semua file ranah Anda.

  1. Buka folder /Users/$USER/Library/Developer/CoreSimulator/Devicesdi Finder.

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

  2. Pencarian untuk .realm

  3. Ubah pencarian untuk melihat di "Devices"folder saja.

  1. Simpan pencarian ke sidebar Anda (misalnya sebagai Realms)

Ketika diurutkan berdasarkan tanggal, ini akan memberi Anda daftar .realmfile-file Simulator termodifikasi yang cepat dan mudah diklik .


Terima kasih @Archdoog - bukan ide buruk ketika Anda akan melalui banyak proyek baru dengan Realm
Allen

4
Menyimpannya sebagai pencarian adalah jenius! Terima kasih! :)
karlingen

22

Ini adalah solusi yang mudah .. Saya mengacaukan ini untuk sementara waktu. Saya harus tunjukkan, ini adalah serangkaian instruksi khusus menggunakan Android Studio dan AVD Emulator.

1) Mulai Emulator dan jalankan aplikasi Anda.

2) Saat aplikasi masih berjalan, buka Monitor Perangkat Android. (ada di bilah alat di sebelah ikon manajer AVD dan SDK)

3) Klik tab File Explorer di Monitor Perangkat. Seharusnya ada banyak folder.

4) Navigasi jalur berikut: Data> Data> Nama Paket Anda > file> Default.Realm (atau apa pun nama Anda)

Ex. Jika Anda menggunakan salah satu contoh proyek ranah, jalurnya akan seperti Data> Data> io.realm.examples.realmgridview> file> default.realm

5) Sorot file, klik ikon Floppy Disk di area kanan atas "tarik file dari perangkat"

6) Simpan ke mana pun Anda inginkan dan selesai.


18

Apa yang saya lakukan adalah menggunakan

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

dan kemudian itu akan dibuat dalam tampilan penuh pada desktop saya dan saya dapat mengklik dua kali untuk meluncurkan Realm Browser di atasnya. Kemudian, saya dapat menghapus parameter dan membiarkannya menggunakan lokasi default ketika saya puas bahwa semua berfungsi seperti yang diharapkan.


1
Saya mendapatkan kesalahan yang mengatakan "Label argumen '(jalur :)' tidak cocok dengan kelebihan yang tersedia". Ada yang tahu kenapa?
Marcelo Gracietti

Itu luar biasa haha!
WilomGfx

Bagus untuk pengujian pada simulator, tetapi mungkin tidak akan berfungsi dengan benar pada perangkat nyata.
Kerusakan

biarkan ranah = coba! Realm (fileURL: URL (string: "/Users/[me[/Desktop/TestRealm.realm")!)
Harris

11

Objective-C - [RLMRealmConfiguration defaultConfiguration].fileURL

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

Misalnya- / Pengguna / "Nama pengguna Anda" / Perpustakaan / Pengembang / CoreSimulator / Perangkat / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / data / Wadah / Data / Aplikasi / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Dokumen /

Ini adalah perintah paling sederhana yang dapat Anda jalankan untuk mendapatkan jalur Anda ke file .realm. Anda akan melihat file .realm setelah semua operasi baca dan tulis Anda selesai.

Atau

Anda dapat membuka openSim , alternatif simpanan untuk mengakses direktori dokumen aplikasi Anda langsung dari bilah menu


11

Jawaban di atas tidak menemukan cara untuk menemukan file ranah di platform Android dan percayalah dengan cara ini akan menghemat banyak waktu Anda yang biasanya kita buang dalam pendekatan lain untuk mendapatkan file ranah. Jadi ayo mulai...

Pertama buka "Device File Explorer" di android studio (Lihat -> Alat Windows -> Device File Explorer.

Ini akan membuka penjelajah perangkat Anda.

masukkan deskripsi gambar di sini

sekarang buka data -> data -> (your_app_package_name) -> file -> default.realm

default.realm adalah file tempat kita berada di sini. Sekarang Save_as file ini di lokasi Anda dan akses file dari realm_browser dan Anda akan mendapatkan database Anda.

CATATAN: Pendekatan yang disebutkan diuji pada ponsel yang tidak di-root (satu + 3).


10

Jika Anda menggunakan Realm DB default di simulator:

po Realm().configuration.fileURL

Bisakah Anda menambahkan beberapa detail?
zeeshan

@zeeshan, silakan jeda simulator Anda saat menjalankan, dan ketik perintah, lalu tekan enter.
superarts.org

9

Jawaban yang diperbarui untuk Realm terbaru:

Untuk Android:

checkout stetho dan https://github.com/uPhyca/stetho-realm Video tutorial di sini: https://www.youtube.com/watch?v=9pFJz5VexRw

Untuk iOS (Swift)

Antara:

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

atau

Langkah 1: Miliki konstanta bernama dev di suatu tempat. Katakanlah file Constant

public class Constants {

    public static var dev: Bool = true

}

Langkah 2: Buat kelas lain yang disebut 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()
    }
}

Langkah 3: akhirnya di pengontrol tampilan Anda:

let realm = realmAndPath()

terima kasih kepada Stewart Lynch untuk jawaban aslinya


untuk swift 3 saya perlu mengubah realm.pathkerealm.configuration.fileURL!.absoluteString
Andy

5

Jika Anda mendapatkan kesalahan kotak dialog 'Masukkan Kunci Enkripsi':

Saya menggunakan Swift 2.1 dengan Realm 0.96.2 dan mendapatkan kesalahan ini ketika mencoba membuka file database:

'default' tidak dapat dibuka. Mungkin dienkripsi, atau tidak dalam format file yang kompatibel. Jika Anda tahu file itu dienkripsi, Anda dapat memasukkan kunci enkripsi secara manual untuk membukanya.

Menemukan bahwa menggunakan versi pra-rilis dari Realm Browser 0.96 memperbaiki masalah:

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


3

Pertama, saya mengakui bahwa ini adalah utas Android tetapi ini adalah hasil pencarian pertama untuk masalah ini secara umum.

Untuk membuka Xcode Simulator Realm db yang baru-baru ini dibuat di Realm Browser, Anda dapat menggunakan skrip ini di Automator atau mengetik semuanya di terminal. Dengan menggunakan Automator, saya memiliki akses sekali klik ke dunia saya saat ini.

    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

Instal Realm Browser. Di Automator, klik Baru, pilih Run Shell Script, rekatkan kode, ubah Realm Db name, Klik Run untuk menguji, simpan file di tempat yang nyaman untuk akses klik cepat.

Saya tidak tahu di mana saya menemukan tip ini pertama kali tetapi utas ini mengingatkan saya bagaimana saya mengakses data langsung saya di masa lalu.


3

Hanya untuk Aplikasi Anda ada di Simulator iOS

Memasukkan

console.log (Realm.defaultPath)

dalam kode misalnya: App.js


2

Saya telah mengambil satu langkah lebih jauh. Saya telah membuat file cepat bernama RealmFunctions dan di dalamnya, saya telah membuat fungsi ini

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

Sekarang di pengontrol tampilan utama saya, saya memiliki variabel boolean global yang disebut 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.

Sekarang, yang harus saya lakukan dalam kode saya adalah

let realm = realmAndPath()

Jadi ketika dalam mode pengembangan, saya dapat menemukan basis data ranah saya di desktop dan dapat dibuka di ranah Browser.


1
Galat: (13, 21) label argumen '(jalur :)' tidak cocok dengan kelebihan yang tersedia, tampaknya diubah dalam versi yang lebih baru
OWADVL

2

Saya menemukan file ranah saya dengan mengeluarkan perintah ini di Terminal: sudo find / -name "*.realm" .

Semoga ini membantu!


2

Dalam Swift

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

1

Untuk mendapatkan jalur DB untuk iOS, cara paling sederhana adalah:

  1. Luncurkan aplikasi Anda dalam simulator
  2. Jeda kapan saja di debugger
  3. Buka konsol (di mana Anda memiliki (lldb)) dan ketik:po RLMRealm.defaultRealmPath

Tada ... Anda memiliki path ke database ranah Anda



1

Bagi mereka yang menggunakan Bereaksi Asli dan menggunakan ranah default:

Realm.defaultPath


Saya tidak dapat menemukan ini!
Ali Hesari

@Natividad di mana harus meletakkan kode ini? ada saran untuk mendapatkan file ranah?
Bikram Thapa

@AliHesari apakah Anda menemukan sth?
Bikram Thapa

componentDidMount() { console.log(Realm.defaultPath) }di komponen saya menggunakan Realm bekerja untuk saya. Periksa konsol xcode untuk mengetahui path setelahnya.
Paul Schorey

0

Di bawah Alat -> Monitor Perangkat Android

Dan di bawah File Explorer. Cari aplikasi. Dan file tersebut di bawah data / data.


0

Perintah lldb yang benar untuk Xcode 7, Swift 2.2+ adalah po Realm.Configuration.defaultConfiguration.path!


1
anggota tidak memanggil pathtetapi fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk

1
Anda benar ... ini berubah di realm1.0 ... saya menggunakan versi 0.98 ketika saya menjawab ini ... jawaban yang benar adalah po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Solusi Swift 2.3

Solusi lebih mudah yang tidak akan putus dengan pembaruan Realm

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

File .realm harus berada di dalam "Documents"

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.