Làm thế nào để tìm tập tin cảnh giới của tôi?


238

Tôi đã tạo DB theo địa hạt và tôi không thể tìm thấy tệp vì HĐH của tôi (Yosemite) không có thư mục di động trong / private / var / mobile.

Làm thế nào tôi nên truy cập vào vương quốc của tôi để chạy trong trình duyệt?

Đăng chéo từ các nhóm google


Kiểm tra này . Phương pháp này hoạt động cho cả thiết bị đã root và chưa được phân phối.
krhitesh

Câu trả lời:


474

Tìm tập tin cảnh giới

Dành cho Android

Làm cách nào để xem tệp Realm của tôi trong Trình duyệt Realm?

Dành cho iOS

Nếu ứng dụng của bạn có trên thiết bị

Đảm bảo rằng thiết bị của bạn được kết nối và đi đến cửa sổ thiết bị trong menu Xcode Cửa sổ> Thiết bị (⌘⇧2). Ở đó bạn sẽ có thể chọn thiết bị và ứng dụng của mình từ danh sách các ứng dụng đã cài đặt có quyền gỡ lỗi.

Sau khi chọn ứng dụng của bạn, hãy truy cập cog trên thanh công cụ ở cuối chế độ xem bảng và chọn Tải xuống Container Tải xuống . Ở đó bạn sẽ có thể kéo tệp từ vị trí tài liệu sang máy Mac của bạn. Nó sẽ được lưu dưới dạng một gói xcappdata.

Khi bạn mở đường dẫn cục bộ trong Finder, nơi bạn đã lưu nó, bạn có thể nhấn vào đó bằng cách chọn Hiển thị gói nội dung Gói trong thư mục ngữ cảnh của trình tìm, khi bạn chọn tệp. Cửa sổ công cụ tìm mới sẽ mở ra, nơi bạn tìm thấy Vương quốc của mình bên trong đường dẫn sau (ví dụ): AppData / Documents / default.realm (Thư mục '/ private / var / mobile' là đường dẫn, được iOS sử dụng trên hệ thống tập tin thiết bị.

Nếu ứng dụng của bạn nằm trên Trình mô phỏng

Chuyển đến thư mục người dùng của bạn:

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

Có lẽ cách dễ nhất để có được đường dẫn hiện tại của vương quốc mặc định là tạm dừng trình giả lập và nhập thông tin sau vào bảng điều khiển LLDB:

Mục tiêu-C :
(lldb) po [RLMRealmConfiguration defaultConfiguration].fileURL

Swift sử dụng Realm Objective-C :
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

Swift sử dụng Realm Swift :
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

Hoặc nếu bạn có một RLMRealmví dụ trong tay, bạn có thể sử dụng:
(lldb) po myRealm.configuration.fileURL

Sau đó, chỉ cần sao chép đường dẫn này, mở thiết bị đầu cuối của bạn và nhập open [Đường dẫn đã dán ở đây]

LƯU Ý: Một số đường dẫn có khoảng trắng trong đó, vì vậy hãy chắc chắn sử dụng "\" trước khoảng trắng để thoát khỏi nó

Công cụ trợ giúp SimPholder

Đây có lẽ là cách nhanh nhất để tìm tệp của ứng dụng trong trình giả lập. Cài đặt SimPholder . Điều này sẽ cho phép bạn truy cập thư mục tài liệu của ứng dụng trực tiếp từ thanh menu.

Lưu ý Một số người đã đề cập rằng SimPholder đã đưa họ đến thư mục ứng dụng giả lập sai, nếu đó là trường hợp của bạn, hãy in ra đường dẫn vương quốc của bạn bằng cách làm theo các bước ở trên, in ra realm.path của bạn


1
Sau khi cập nhật mới nhất, có lỗi khi bạn làm po RLMRealm.defaultRealmPath(). Nó nóicalled object type 'NSString *' is not a function or function pointer
carbonr

Tôi có vấn đề tương tự như @carbonr. Ai có thể giúp đỡ?
denislexic

2
Phiên bản Objective-C trên 0,97 sử dụngpo [[RLMRealm defaultRealm]path]
AlexHsieh

5
Một phần của câu trả lời này đã lỗi thời. Đây là cách gần đây nhất để tìm tệp cơ sở dữ liệu địa hạt của bạn (default.realm) bằng RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
gật đầu

1
Sử dụng phương pháp RealmSwift tôi nhận được như sau:error: use of undeclared identifier 'Realm'
Simon Bengtsson

122

Tôi đã tìm thấy cách đơn giản nhất cho iOS / macOS (cho swift 3 Xcode 8.3)

override func viewDidLoad() {

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

Sau đó x code sẽ ghi lại đường dẫn chính xác, kiểm tra màn hình bên dưới.

nhập mô tả hình ảnh ở đây

Bây giờ hãy mở Finder và nhấn + + G(lệnh + shift + G) và dán đường dẫn đăng nhập vào Xcode của bạn


10
con đường bị phản đối sử dụng Realm.Configuration.defaultConfiguration.fileURLthay thế
hewigovens

2
Của nó được thay đổi để Realm.configuration.fileURL
Reshad

3
swift 3, xcode8.3 cũng hoạt động vớiRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

tôi đã làm theo quy trình tương tự nhưng tôi không thể tìm thấy đường dẫn tệp trong công cụ tìm
RejoylinLokeshwaran

1
Điều này là hoàn hảo cho trình giả lập và một khi bạn tìm thấy tệp của mình, đó là một cú nhấp chuột dễ dàng để "Mở WIth" để kích hoạt Realm Studio. Điều này đặt ra câu hỏi hoặc suy nghĩ: Realm Studio cần một tùy chọn menu "mở gần đây"!
đã vẽ ..

39

Một lựa chọn dễ dàng cho các ứng dụng giả lập

Tạo một thư mục / tìm kiếm thông minh trong Finder. Cung cấp truy cập nhanh chóng và dễ dàng có thể nhấp vào tất cả các tập tin lĩnh vực của bạn.

  1. Mở thư mục /Users/$USER/Library/Developer/CoreSimulator/Devicestrong Finder.

    Với thiết bị đầu cuối open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. Tìm kiếm .realm

  3. Thay đổi tìm kiếm để chỉ tìm trong "Devices"thư mục.

  1. Lưu tìm kiếm vào thanh bên của bạn (ví dụ như Vương quốc)

Khi được sắp xếp theo ngày, điều này sẽ cung cấp cho bạn một danh sách có thể nhấp nhanh chóng và dễ dàng của các .realmtệp Trình mô phỏng được sửa đổi mới nhất .


Cảm ơn @Archdoog - một ý tưởng không tồi khi bạn trải qua rất nhiều dự án mới với Realm
Allen

4
Lưu nó như một tìm kiếm là thiên tài! Cảm ơn bạn! :)
karlingen

22

Đây là một giải pháp dễ dàng .. Tôi đã nhầm lẫn với điều này trong một thời gian. Tôi nên chỉ ra, đây là một bộ hướng dẫn cụ thể sử dụng Android Studio và Trình giả lập AVD.

1) Khởi động Trình giả lập và chạy ứng dụng của bạn.

2) Trong khi ứng dụng vẫn đang chạy, hãy mở Trình giám sát thiết bị Android. (trên thanh công cụ bên cạnh các biểu tượng trình quản lý AVD và SDK)

3) Nhấp vào tab File Explorer trong Màn hình thiết bị. Nên có rất nhiều thư mục.

4) Điều hướng đường dẫn sau: Dữ liệu> Dữ liệu> Tên gói của bạn > tệp> Mặc định.Realm (hoặc bất cứ điều gì bạn đặt tên cho nó)

Ví dụ. Nếu bạn đang sử dụng một trong các dự án ví dụ cảnh giới, đường dẫn sẽ giống như Dữ liệu> Dữ liệu> io.realm.examples.realmgridview> tệp> default.realm

5) Đánh dấu tệp, nhấp vào biểu tượng Đĩa mềm ở khu vực phía trên bên phải "kéo tệp từ thiết bị"

6) Lưu nó vào bất cứ nơi nào bạn muốn và thực hiện.


18

Những gì tôi đã làm là sử dụng

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

và sau đó nó được tạo ở chế độ xem đầy đủ trên máy tính để bàn của tôi và tôi có thể nhấp đúp để khởi chạy Trình duyệt Realm trên nó. Sau đó, tôi có thể xóa tham số và cho phép nó sử dụng vị trí mặc định khi tôi hài lòng rằng tất cả đều hoạt động như mong đợi.


1
Tôi gặp lỗi khi nói "Nhãn đối số '(đường dẫn :)' không khớp với bất kỳ tình trạng quá tải có sẵn nào". Bất cứ ý tưởng tại sao?
Marcelo Gracietti

Đó chỉ là tuyệt vời haha!
WilomGfx

Tuyệt vời để thử nghiệm trên trình giả lập, nhưng có lẽ sẽ không hoạt động chính xác trên thiết bị thực.
Trục trặc

hãy để cõi = thử! Realm (fileURL: URL (string: "/Users/[me]/Desktop/TestRealm.realm")!)
Harris

11

Mục tiêu-C - [RLMRealmConfiguration defaultConfiguration].fileURL

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

Vd: /

Đây là lệnh đơn giản nhất bạn có thể chạy để đưa đường dẫn đến tệp .realm. Bạn sẽ thấy tệp .realm sau khi tất cả các thao tác đọc và ghi của bạn được hoàn thành.

Hoặc là

Bạn có thể mở openSim mã nguồn , thay thế các trình giả lập để truy cập thư mục tài liệu của ứng dụng trực tiếp từ thanh menu của bạn


11

Các câu trả lời ở trên thiếu một cách để tìm tệp cảnh giới trong nền tảng Android và tin tôi theo cách này sẽ tiết kiệm rất nhiều thời gian của bạn mà chúng ta thường lãng phí trong các phương pháp khác để có được tệp cảnh giới. Vậy hãy bắt đầu ...

Lần đầu tiên mở "Trình khám phá tệp thiết bị" trong studio android (Xem -> Công cụ Windows -> Trình khám phá tệp thiết bị.

Điều này sẽ mở trình thám hiểm thiết bị của bạn.

nhập mô tả hình ảnh ở đây

hiện đang mở dữ liệu -> dữ liệu -> (your_app_package_name) -> tệp -> default.realm

default.realm là tập tin mà chúng tôi đang ở đây. Bây giờ Save_as tệp này tại vị trí của bạn và truy cập tệp từ realm_browser và bạn sẽ nhận được cơ sở dữ liệu của mình.

LƯU Ý: Cách tiếp cận được đề cập được thử nghiệm trên điện thoại không root (một + 3).


10

Nếu bạn đang sử dụng Realm DB mặc định trong trình giả lập:

po Realm().configuration.fileURL

Bạn có thể thêm một số chi tiết?
zeeshan 16/03/19

@zeeshan vui lòng tạm dừng trình giả lập của bạn trong khi chạy và nhập lệnh vào, sau đó nhấn enter.
superarts.org 16/03/19

9

Câu trả lời được cập nhật cho Vương quốc mới nhất:

Dành cho Android:

kiểm tra stetho và https://github.com/uPhyca/stetho-realm Video hướng dẫn tại đây: https://www.youtube.com/watch?v=9pFJz5VexRw

Dành cho iOS (Swift)

Hoặc:

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

hoặc là

Bước 1: Có một hằng số được gọi là dev ở đâu đó. Hãy nói tập tin liên tục

public class Constants {

    public static var dev: Bool = true

}

Bước 2: Tạo một lớp khác gọi là RealmFifts.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()
    }
}

Bước 3: cuối cùng trong trình điều khiển xem của bạn:

let realm = realmAndPath()

cảm ơn Stewart Lynch cho câu trả lời ban đầu


cho swift 3 tôi cần đổi realm.paththànhrealm.configuration.fileURL!.absoluteString
Andy

5

Nếu bạn gặp lỗi hộp thoại 'Enter Encrypt Key':

Tôi đang sử dụng Swift 2.1 với Realm 0.96.2 và gặp lỗi này khi cố mở tệp cơ sở dữ liệu:

'mặc định' không thể mở được. Nó có thể được mã hóa hoặc nó không ở định dạng tệp tương thích. Nếu bạn biết tệp được mã hóa, bạn có thể nhập khóa mã hóa theo cách thủ công để mở tệp.

Nhận thấy rằng việc sử dụng phiên bản tiền phát hành của Realm Browser 0.96 đã khắc phục sự cố:

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


3

Đầu tiên, tôi thừa nhận rằng đây là một chủ đề Android nhưng nó là kết quả tìm kiếm đầu tiên cho vấn đề này nói chung.

Để mở db Xcode Simulator Realm db được tạo gần đây nhất trong Trình duyệt Realm, bạn có thể sử dụng tập lệnh này trong Automator hoặc nhập tất cả vào trong thiết bị đầu cuối. Bằng cách sử dụng Automator, tôi có quyền truy cập bằng một cú nhấp chuột vào vương quốc hiện tại của mình.

    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

Cài đặt trình duyệt Realm. Trong Automator, nhấp vào Mới, chọn Run Shell Script, dán mã, thay đổi tên Realm Db, Nhấp Run để kiểm tra, lưu tệp ở đâu đó thuận tiện để truy cập nhấp nhanh.

Tôi không biết nơi tôi tìm thấy mẹo này lần đầu tiên nhưng chủ đề này nhắc nhở tôi cách tôi truy cập dữ liệu trực tiếp của mình trong quá khứ.


3

Chỉ dành cho Ứng dụng của bạn là trên Trình mô phỏng iOS

Đi vào

console.log (Realm.defaultPath)

trong mã, ví dụ: App.js


2

Tôi đã tiến thêm một bước này. Tôi đã tạo một tệp nhanh chóng có tên RealmFifts và trong đó, tôi đã tạo chức năng này

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

Bây giờ trong trình điều khiển khung nhìn chính của tôi, tôi có một biến boolean toàn cầu được gọi là 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.

Bây giờ, tất cả những gì tôi phải làm trong mã của mình là

let realm = realmAndPath()

Vì vậy, khi ở chế độ phát triển, tôi có thể tìm thấy cơ sở dữ liệu cảnh giới của mình trên máy tính để bàn và có thể mở trong Realm Browser.


1
Lỗi: (13, 21) nhãn đối số '(đường dẫn :)' không khớp với bất kỳ tình trạng quá tải có sẵn nào, dường như nó đã thay đổi trong các phiên bản mới hơn
OWADVL

2

Tôi tìm thấy tập tin cảnh giới của mình bằng cách phát lệnh này trong Terminal : sudo find / -name "*.realm".

Hi vọng điêu nay co ich!


2

Trong Swift

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

1

Để có được đường dẫn DB cho iOS, cách đơn giản nhất là:

  1. Khởi chạy ứng dụng của bạn trong trình giả lập
  2. Tạm dừng nó bất cứ lúc nào trong trình gỡ lỗi
  3. Chuyển đến bảng điều khiển (nơi bạn có (lldb)) và gõ:po RLMRealm.defaultRealmPath

Tada ... bạn có đường dẫn đến cơ sở dữ liệu vương quốc của bạn



1

Đối với những người sử dụng React Native và sử dụng vương quốc mặc định:

Realm.defaultPath


Tôi không thể tìm thấy cái này!
Ali Hesari

@Natividad đặt mã này ở đâu? bất kỳ đề nghị về việc nhận tập tin cảnh giới?
Bikram Thapa

@AliHesari bạn đã tìm thấy sth?
Bikram Thapa

componentDidMount() { console.log(Realm.defaultPath) }trong thành phần của tôi bằng cách sử dụng Realm làm việc cho tôi. Kiểm tra bàn điều khiển xcode cho đường dẫn sau đó.
Paul Schorey

0

Trong Công cụ -> Màn hình thiết bị Android

Và trong File Explorer. Tìm kiếm các ứng dụng. Và các tập tin là dưới dữ liệu / dữ liệu.


0

Lệnh lldb chính xác cho Xcode 7, Swift 2.2+ là po Realm.Configuration.defaultConfiguration.path!


1
thành viên không gọi pathnhưng fileURLRealm.Configuration.defaultConfiguration.fileURL!
nburk

1
bạn đã đúng ... điều này đã thay đổi trong realm1.0 ... tôi đã sử dụng phiên bản 0.98 khi tôi trả lời ... câu trả lời đúng là po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Giải pháp Swift 2.3

Giải pháp dễ dàng hơn mà không bị hỏng với các bản cập nhật Realm

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

Tệp .realm phải nằm trong "Tài liệu"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.