如何找到我的领域文件?


239

我已经按领域创建了数据库,但由于操作系统(Yosemite)在/ private / var / mobile中没有移动文件夹,因此无法找到该文件。

如何访问我的领域以在浏览器中运行?

来自Google网上论坛的交叉发布


检查这个出来。此方法适用于有根和无根设备。
krhitesh

Answers:


474

查找领域文件

对于Android

如何在领域浏览器中查看我的领域文件?

对于iOS

如果您的应用程序在设备上

确保您的设备已连接,然后转到Xcode菜单窗口>设备(⌘⇧2)中的设备窗口。在这里,您可以从已安装的具有调试权限的应用程序列表中选择设备和应用程序。

选择您的应用程序后,转到表格视图底部工具栏中的齿轮,然后选择“下载容器...”。在那里,您可以将文件从文档位置拉到Mac。它将另存为xcappdata捆绑包。

当您在Finder中打开本地路径并将其保存时,可以在选择文件时通过在Finder的上下文菜单中选择“显示包内容”来使用该路径。将打开一个新的查找器窗口,您可以在以下路径(例如)中找到自己的领域:AppData / Documents / default.realm(目录“ / private / var / mobile”是路径,iOS在设备文件系统。

如果您的应用程序在模拟器上

转到用户目录:

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

获取默认领域的当前路径的最简单方法可能是暂停模拟器,然后在LLDB控制台中输入以下内容:

目标-C
(lldb) po [RLMRealmConfiguration defaultConfiguration].fileURL

使用Realm Objective-C的Swift
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

使用Realm Swift的Swift
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

或者,如果您有RLMRealm实例,则可以使用:
(lldb) po myRealm.configuration.fileURL

然后只需复制此路径,打开您的终端,然后输入open [此处粘贴的路径]

注意:某些路径中有空格,因此请务必在空格前使用“ \”将其转义

辅助工具SimPholders

这可能是在模拟器中查找应用程序文件的最快方法。安装SimPholders。这将使您可以直接从菜单栏中访问应用程序的文档目录。

注意有人提到SimPholders将它们带到错误的模拟器应用文件夹中,如果是这种情况,请按照上述步骤打印出您的领域路径,然后打印出您的realm.path


1
最新更新之后,您做错了po RLMRealm.defaultRealmPath()。它说called object type 'NSString *' is not a function or function pointer
carbonr

我和@carbonr有相同的问题。有人可以帮忙吗?
denislexic 2015年

2
使用0.97以上的Objective-C版本po [[RLMRealm defaultRealm]path]
AlexHsieh'1

5
现在,部分答案已经过时了。这是使用RealmSwift查找领域数据库文件(default.realm)的最新方法:Realm.Configuration.defaultConfiguration.fileURL
nodebase '16

1
使用RealmSwift方法,我得到以下信息:error: use of undeclared identifier 'Realm'
Simon Bengtsson

122

我找到了最简单的iOS / macOS方法(适用于Swift 3 Xcode 8.3)

override func viewDidLoad() {

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

然后,x代码将记录正确的路径,请检查以下屏幕。

在此处输入图片说明

现在打开Finder并按+ + G(command + shift + G)并粘贴记录在Xcode上的路径


10
路径已弃用。使用Realm.Configuration.defaultConfiguration.fileURL代替
hewigovens

2
它已更改为Realm.configuration.fileURL
重塑了

3
迅捷3,xcode8.3也适用于Realm.Configuration.defaultConfiguration.fileURL!
xmhafiz

我遵循相同的过程,但无法在finder中找到文件路径
RejoylinLokeshwaran

1
这对于模拟器非常理想,找到文件后,只需单击cmd单击“打开”即可启动Realm Studio。这引出了一个问题或想法:​​Realm Studio需要一个“最近打开”文件菜单选项!
提请。

39

模拟器应用程序的一种简单替代方法

在Finder中创建智能文件夹/搜索。使您可以轻松快捷地单击所有领域文件。

  1. /Users/$USER/Library/Developer/CoreSimulator/Devices在Finder中打开文件夹。

    带端子 open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. 搜索 .realm

  3. 将搜索更改为"Devices"仅在文件夹中查找。

  1. 将搜索保存到侧边栏(例如,作为领域)

按日期排序时,这将为您提供快速便捷的可点击列表,列出最新修改的Simulator .realm文件。


由于@Archdoog -不是当你经历了很多新项目领域是一个坏主意
阿伦

4
将其保存为搜索是天才!谢谢!:)
karlingen

22

这是一个简单的解决方案。。我应该指出,这是使用Android Studio和AVD Emulator的一组特定说明。

1)启动模拟器并运行您的应用程序。

2)在应用程序仍在运行时,打开Android设备监视器。(位于工具栏中的AVD和SDK管理器图标旁边)

3)单击设备监视器中的文件资源管理器选项卡。应该有很多文件夹。

4)浏览以下路径:“数据”>“数据”> “包名称” >“文件”>“ Default.Realm”(或任何您命名的名称)

例如 如果使用领域示例项目之一,则路径应为“数据”>“数据”>“ io.realm.examples.realmgridview>文件> default.realm”

5)高亮显示文件,单击右上角“从设备中拉出文件”的软盘图标

6)将其保存到您想要完成的任何地方。


18

我所做的就是使用

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

然后在桌面上以全视图创建它,然后双击以在其上启动Realm Browser。稍后,当我对所有参数都按预期工作时感到满意时,可以删除该参数并让其使用默认位置。


1
我收到一条错误消息:“参数标签'(path :)'与任何可用的重载都不匹配”。知道为什么吗?
Marcelo Gracietti

那真是太神奇了哈哈!
WilomGfx

非常适合在模拟器上进行测试,但可能无法在真实设备上正常工作。
故障

让境界=尝试!领域(fileURL:URL(string:“ /Users/[me]/Desktop/TestRealm.realm”)!)–
哈里斯(Harris

11

目标C- [RLMRealmConfiguration defaultConfiguration].fileURL

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

例如,/用户/“您的用户名” /库/开发人员/ CoreSimulator /设备/ E58645FF-90DE-434D-B2EB-FA145EB6F2EA /数据/容器/数据/应用程序/ E427BD21-2CB1-4F64-9ADF-8742FF731209 /文档/

这是您可以运行以获取.realm文件路径的最简单命令。完成所有读取和写入操作后,您将看到.realm文件。

要么

您可以将开源的OpenSim,替代simpholders直接从你的菜单栏访问应用程序的文件目录


11

上面的答案缺少在Android平台中查找领域文件的方法,并相信我这种方法将节省您的大量时间,而我们通常将其浪费在其他获取领域文件的方法中。所以我们开始吧...

首先在android studio中打开“设备文件资源管理器”(查看->工具Windows->设备文件资源管理器。

这将打开您的设备资源管理器。

在此处输入图片说明

现在打开数据->数据->(您的应用程序包名称)->文件-> default.realm

default.realm是我们在这里的文件。现在,将此文件另存为文件,并从realm_browser访问该文件,您将获得数据库。

注意:提到的方法已在无根电话(one + 3)上进行了测试。


10

如果您在模拟器中使用默认的Realm DB:

po Realm().configuration.fileURL

您可以添加一些详细信息吗?
zeeshan

@zeeshan,请在运行时暂停模拟器,然后输入命令,然后按Enter。
superarts.org

9

更新了最新领域的答案:

对于Android:

在此处结帐Stetho和https://github.com/uPhyca/stetho-realm视频教程:https : //www.youtube.com/watch? v = 9pFJz5VexRw

对于IOS(Swift)

要么:

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

要么

步骤1:在某处有一个称为dev的常量。假设常量文件

public class Constants {

    public static var dev: Bool = true

}

步骤2:创建另一个名为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()
    }
}

步骤3:最后在您的视图控制器中:

let realm = realmAndPath()

感谢Stewart Lynch的原始答案


快速3我需要更改realm.pathrealm.configuration.fileURL!.absoluteString
Andy

5

如果出现“输入加密密钥”对话框错误:

我正在将Swift 2.1与Realm 0.96.2一起使用,并且在尝试打开数据库文件时遇到此错误:

无法打开“默认”。它可能是加密的,或者不是兼容的文件格式。如果您知道文件已加密,则可以手动输入其加密密钥以将其打开。

发现使用Realm Browser 0.96的预发行版本解决了该问题:

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


3

首先,我承认这是一个Android线程,但通常是该问题的第一个搜索结果。

要在Realm Browser中打开最近创建的Xcode Simulator Realm db,可以在Automator中使用此脚本,或在终端上全部键入。通过使用Automator,我可以一键访问当前领域。

    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

安装领域浏览器。在Automator中,单击“新建”,选择“运行Shell脚本”,粘贴代码,更改Realm Db名称,单击“运行”进行测试,将文件保存在方便快速单击访问的位置。

我不知道我第一次在哪里找到这个技巧,但是这个线程让我想起了过去我是如何访问实时数据的。


3

只为您的应用程序在iOS模拟器上

输入

console.log (Realm.defaultPath)

在代码中,例如:App.js


2

我已经迈出了这一步。我创建了一个名为RealmFunctions的快速文件,并在其中创建了此函数

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

现在在主视图控制器中,我有一个名为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.

现在,我在代码中要做的就是

let realm = realmAndPath()

因此,在开发模式下,我可以在桌面上找到我的领域数据库,并可以在领域浏览器中打开。


1
错误:(
13,21

2

我通过在Terminal:中发出此命令找到了我的领域文件 sudo find / -name "*.realm"

希望这可以帮助!


2

在斯威夫特

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

1

要获取iOS的数据库路径,最简单的方法是:

  1. 在模拟器中启动您的应用
  2. 随时在调试器中暂停它
  3. 转到控制台(您在其中(lldb))并输入:po RLMRealm.defaultRealmPath

Tada ...您有通往领域数据库的路径




0

在工具-> Android设备监视器下

并在文件资源管理器下。搜索应用。文件位于数据/数据下。


0

适用于Xcode 7,Swift 2.2+的正确lldb命令是 po Realm.Configuration.defaultConfiguration.path!


1
该成员不是调用者,path而是fileURL:Realm.Configuration.defaultConfiguration.fileURL!
nburk

1
您是正确的...在realm1.0中对此进行了更改...当我回答此问题时,我使用的是0.98版本...正确的答案是 po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103 '16

0

Swift 2.3解决方案

更简单的解决方案,不会因Realm更新而中断

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

.realm文件应位于“文档”中

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.