【问题标题】:How to find my realm file?如何找到我的领域文件?
【发布时间】:2015-04-12 11:51:48
【问题描述】:

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

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

来自 google 群组的交叉发布

【问题讨论】:

  • 检查this。此方法适用于有根设备和无根设备。

标签: realm


【解决方案1】:

查找领域文件

安卓版

How to view my Realm file in the Realm Browser?

对于 iOS

如果您的应用在设备上

确保您的设备已连接并转到 Xcode 菜单中的设备窗口 Window > Devices (⌘⇧2)。在那里,您将能够从具有调试权限的已安装应用程序列表中选择您的设备和应用程序。

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

当您在 Finder 中打开保存它的本地路径时,您可以在选择文件时通过在 Finder 的上下文菜单中选择 “显示包内容” 来访问该路径。将打开一个新的 finder 窗口,您可以在以下路径中找到您的 Realm(例如): 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 控制台中输入以下内容:

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

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

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

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

然后复制这个路径,打开你的终端,输入open [Pasted path here]

注意:有些路径中有一个空格,所以一定要在空格前使用“\”来转义它

辅助工具 SimPholders

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

注意 有人提到 SimPholders 将他们带到了错误的模拟器应用程序文件夹,如果您是这种情况,请按照上述步骤打印您的领域路径,打印您的领域。路径

【讨论】:

  • 最新更新后,当你做po RLMRealm.defaultRealmPath()时出现错误。它说called object type 'NSString *' is not a function or function pointer
  • 我和@carbonr 有同样的问题。有人可以帮忙吗?
  • Objective-C 0.97 以上版本使用po [[RLMRealm defaultRealm]path]
  • 这个答案的一部分现在已经过时了。这是使用 RealmSwift 查找领域数据库文件 (default.realm) 的最新方法:Realm.Configuration.defaultConfiguration.fileURL
  • 使用 RealmSwift 方法我得到以下信息:error: use of undeclared identifier 'Realm'
【解决方案2】:

这是一个简单的解决方案.. 我搞砸了一段时间。我应该指出,这是一组使用 Android Studio 和 AVD 模拟器的特定指令。

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

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

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

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

例如。如果您正在使用领域示例项目之一,则路径将类似于 Data>Data>io.realm.examples.realmgridview>files>default.realm

5) 突出显示文件,点击右上方“从设备中拉出文件”的软盘图标

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

【讨论】:

    【解决方案3】:

    要获取 iOS 的 DB 路径,最简单的方法是:

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

    Tada...你有你的领域数据库的路径

    【讨论】:

      【解决方案4】:

      我为 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

      路径

      【讨论】:

      • 路径已弃用。改用Realm.Configuration.defaultConfiguration.fileURL
      • 已更改为 Realm.configuration.fileURL
      • swift 3,xcode8.3 也适用于Realm.Configuration.defaultConfiguration.fileURL!
      • 此解决方案仅适用于模拟器,不适用于真实设备。
      • 这对于模拟器来说是完美的,一旦你找到你的文件,它是一个简单的 cmd 单击“打开方式”来启动 Realm Studio。这引出了一个问题或想法:​​Realm Studio 需要一个“打开最近的”文件菜单选项!
      【解决方案5】:

      我所做的是使用

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

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

      【讨论】:

      • 我收到一条错误消息,提示“参数标签 '(path:)' 不匹配任何可用的重载”。知道为什么吗?
      • 太棒了哈哈!
      • 非常适合在模拟器上进行测试,但在真实设备上可能无法正常工作。
      • 让领域 = 试试吧!领域(fileURL:URL(字符串:“/Users/[me]/Desktop/TestRealm.realm”)!)
      【解决方案6】:

      我更进一步。 我创建了一个名为 RealmFunctions 的 swift 文件,并在其中创建了这个函数

          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()
      

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

      【讨论】:

      • 错误:(13, 21) 参数标签 '(path:)' 与任何可用的重载都不匹配,似乎在较新的版本中发生了变化
      【解决方案7】:

      如果您收到“输入加密密钥”对话框错误:

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

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

      发现使用Realm Browser 0.96的预发布版本修复了这个问题:

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

      【讨论】:

        【解决方案8】:

        正确的 (lldb) 命令是:Realm.Configuration.defaultConfiguration.path

        【讨论】:

          【解决方案9】:

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

          在文件资源管理器下。搜索应用程序。该文件位于 data/data 下。

          【讨论】:

            【解决方案10】:

            Objective-C - [RLMRealmConfiguration defaultConfiguration].fileURL

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

            例如-/Users/"Your-user-name"/Library/Developer/CoreSimulator/Devices/E58645FF-90DE-434D-B2EB-FA145EB6F2EA/data/Containers/Data/Application/E427BD21-2CB1-4F64-9ADF- 8742FF731209/文件/

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

            或者

            你可以开源openSim,替代simpholders,直接从你的菜单栏访问你应用的文档目录

            【讨论】:

              【解决方案11】:

              Xcode 7、Swift 2.2+ 的正确 lldb 命令是 po Realm.Configuration.defaultConfiguration.path!

              【讨论】:

              • 该成员不是调用path而是fileURL:Realm.Configuration.defaultConfiguration.fileURL!
              • 你是对的......这在realm1.0中发生了变化......当我回答这个问题时,我使用的是0.98版......正确答案是po Realm.Configuration.defaultConfiguration.fileURL?.path
              【解决方案12】:

              最新领域的更新答案:

              对于安卓:

              结帐 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 的原始答案

              【讨论】:

              • 对于 swift 3,我需要将 realm.path 更改为 realm.configuration.fileURL!.absoluteString
              【解决方案13】:

              Swift 2.3 解决方案

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

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

              .realm 文件应该在“文档”中

              【讨论】:

                【解决方案14】:

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

                希望这会有所帮助!

                【讨论】:

                  【解决方案15】:

                  首先,我承认这是一个 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 中,点击 New,选择 Run Shell Script,粘贴代码,更改 Realm Db 名称,点击 Run 进行测试,将文件保存在方便快速点击访问的地方。

                  我不知道我第一次在哪里找到这个提示,但这个帖子提醒了我过去是如何访问我的实时数据的。

                  【讨论】:

                    【解决方案16】:

                    对于那些使用 React Native 并使用默认领域的人:

                    Realm.defaultPath

                    【讨论】:

                    • 我找不到这个!
                    • @Natividad 把这段代码放在哪里?关于获取领域文件的任何建议?
                    • @AliHesari 你找到了吗?
                    • componentDidMount() { console.log(Realm.defaultPath) } 在我的组件中使用 Realm 为我工作。之后检查 xcode 控制台的路径。
                    • 在一个函数组件中,我将它放在Realm.open(config) 之后,例如像这样console.log('* REALM PATH: ' + Realm.defaultPath);
                    【解决方案17】:

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

                    在 Finder 中创建智能文件夹/搜索。提供对所有领域文件的快速、轻松的可点击访问。

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

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

                    2. 搜索.realm

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

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

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

                    【讨论】:

                    • 感谢 @Archdoog - 当您使用 Realm 完成许多新项目时,这不是一个坏主意
                    • 将其保存为搜索是天才!谢谢! :)
                    • realm 也可以使用cd ~/Library/Developer/CoreSimulator/Devices && find . -name '*.realm'搜索
                    【解决方案18】:

                    在斯威夫特中

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

                    【讨论】:

                      【解决方案19】:

                      iOS 模拟器上只为您的应用提供

                      输入

                      console.log (Realm.defaultPath)
                      

                      在代码中如:App.js

                      【讨论】:

                        【解决方案20】:

                        以上答案缺少在 Android 平台中查找领域文件的方法,相信我这种方式会节省您的大量时间,我们通常会浪费在其他方法中获取领域文件。那么让我们开始吧……

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

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

                        现在打开 data -> data -> (your_app_package_name) -> files -> default.realm

                        default.realm 是我们在这里的文件。现在将此文件另存为您的位置并从领域浏览器访问该文件,您将获得您的数据库。

                        注意:所提到的方法是在非 root 手机(one+3)上测试的。

                        【讨论】:

                          【解决方案21】:

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

                          po Realm().configuration.fileURL
                          

                          【讨论】:

                          • 你能补充一些细节吗?
                          • @zeeshan 请在运行时暂停模拟器,输入命令,然后按回车。
                          【解决方案22】:

                          2020:iOS 真实设备上的 Realm 文件(非模拟器)

                          从顶部的菜单栏开始,然后按照以下顺序:-

                          1. 窗口

                          2. 设备和模拟器

                          3. 选择设备

                          4. 在底部找到标题(安装的应用程序)

                            注意:向下滚动或放大“设备和模拟器”弹出窗口以查看已安装应用的列表。

                          5. 选择您的应用。

                          6. 点击齿轮按钮(它位于应用列表的底部

                          7. 下载容器

                          8. 选择保存位置。

                          9. 右键点击下载的文件

                          10. 显示包内容

                          11. 应用数据

                          就是这样,您可以根据您的配置访问您的领域文件。例如,如果您保存在 Documents 或 Library 文件夹中,只需打开它即可查看您的领域。

                          【讨论】:

                            【解决方案23】:

                            如前所述,您可以使用下一个方法来查找文件位置

                            //code
                            Realm.Configuration.defaultConfiguration.fileURL 
                            
                            //lldb
                            (lldb) po Realm.Configuration.defaultConfiguration.fileURL
                            

                            或者你可以手动找到它:

                            //Simulator
                            /Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-uuid>/data/Containers/Data/Application/<application-uuid>/Documents/
                            
                            //for example
                            /Users/alex/Library/Developer/CoreSimulator/Devices/E1D084B0-CD97-41B4-871F-E131CA33F635/data/Containers/Data/Application/373721C7-2381-4E3D-9ABC-2147F748322F/Documents/
                            
                            //iPhone (download a copy)
                            Xcode -> Window -> Devices and Simulators -> Devices -> <select device and app> -> App container actions -> Download Container... -> <selectfolder and navigate to it (.xcappdata)> -> Right Click -> Show Package Consents -> AppData -> Documents
                            

                            *请注意,如果您为领域设置了文件名,并且它的扩展名不是.realmRealmStudio默认不会打开它

                            【讨论】:

                              【解决方案24】:

                              如果您尝试从真实 iOS 设备

                              中查找您的领域文件

                              Xcode 12

                              中为我工作

                              步骤-

                              1. 在 Xcode 中,转到 窗口 -> 设备和模拟器
                              2. 从左侧列表中选择您的设备
                              3. 在已安装的应用部分下选择您的应用名称
                              4. 现在,突出显示您的应用名称并点击其下方的齿轮图标
                              5. 从下拉列表中选择下载容器选项
                              6. 选择要保存文件的位置
                              7. 右键单击刚刚保存的文件并选择显示包内容
                              8. 在 App Data 文件夹中导航到您保存文件的文件夹。

                              【讨论】:

                              • 这似乎已经过时了,因为在 XCode 12.4 中,模拟器/设备部分没有已安装应用程序的列表
                              【解决方案25】:

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2016-01-27
                                • 1970-01-01
                                相关资源
                                最近更新 更多