【问题标题】:Where is my sqlite data stored in iOS simulator?我的 sqlite 数据存储在 iOS 模拟器中的什么位置?
【发布时间】:2017-01-07 13:20:37
【问题描述】:

我使用 sqlite 插件在 xCode(使用 PhoneGap)上创建了一个 iPad 应用程序,存储了数据,然后当我想查看我存储的数据时,我找不到保存它的位置。根据我的在线研究,它应该在 /Library/Developer/CoreSimulator/Device 下

但是,当我导航到 /CoreSimulator 文件时,我没有看到子文件夹“/Device”,只有“/Profiles/Runtimes”?

当我重新打开应用并想检查我存储的数据时,我也看不到它们。

【问题讨论】:

标签: ios sqlite cordova ios-simulator


【解决方案1】:
let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)

let docsDir = dirPaths[0]

print(docsDir)

获取在调试器中打印的路径,复制它,打开 finder 并按 Cmd+Shift+G。将打开一个转到文件夹的对话框并粘贴路径并按 Enter。您将被导航到该文件夹​​。在您的项目中创建的所有文档都将存在于该文件夹中,包括 .sqlite 文件。不要尝试手动导航到该文件夹​​。您可能正在查看错误的文件夹。

当每次 Xcode 打印不同的路径时也不必担心。它是从 Xcode 6 开始带来的变化。不知道为什么。但是您的文件(那些文件)可能会保持更新。

【讨论】:

    【解决方案2】:

    这是我的应用程序的文件夹:

    /Users/***/Library/Developer/CoreSimulator/Devices/4420949E-AD14-4A4F-9153-53891734BEB9/data/Containers/Data/Application/0A18183F-2CF6-4D72-938D-DF59CFA48CCF

    您可以通过以下代码找到您应用的文件夹:

    NSString *strPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

    或者只是添加一个插件:NCSimulatorPlugin

    【讨论】:

      【解决方案3】:

      我在使用核心数据时也遇到了同样的问题,

      我如何通过以下步骤解决问题:

      1. 在控制台打印我的sqlite文件的url

      2. 复制网址

      3. 打开查找器并按 cmd + shift + G

      4. 粘贴网址并回车

      然后会显示sql文件。

      我没用过PhoneGap,但是如果你可以从SDK打印sql文件的url,

      您也可以找到该文件。

      【讨论】:

      • print the url of my sqlite file in console 怎么做
      • 如果您使用 iOS 10 以上的版本,您可以打印 persistentContainer.defaultDirectoryURL() 。如果你使用旧版本,你可以在添加NSSQLiteStoreTypepersistentStore时打印url。
      【解决方案4】:

      独立应用

      从 Swift 4+ 开始,在某处添加断点以停止代码,然后在控制台中:

      po FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
      

      然后您可以在其中一个子目录中找到一个 sqlite 文件。它可能会有所不同,具体取决于 iOS 版本。

      如果您使用的是应用组(或独立应用的替代方法)

      如果数据在多个应用程序之间共享,上述方法将不起作用。但是如果你只是没有找到sqlite文件,你也可以按照这个方法。

      你可以让Xcode打印路径:

      1. 打开Product > Scheme > Edit Scheme > Run > Arguments
      2. 在“启动时传递的参数”中添加 -com.apple.CoreData.SQLDebug 1 参数

      下次启动应用程序时,您应该会在日志输出中看到如下内容:

      CoreData: annotation: Connecting to sqlite database file at /Users/***/Library/Developer/CoreSimulator/Devices/****/data/Containers/****/YourAppName.sqlite
      

      作为奖励,您还将获得大量其他 Core Data 调试信息。

      【讨论】:

        【解决方案5】:

        在您应用的控制台上键入“po NSUserDirectory”,它将返回所有模拟器文件所在的 url。

        1.复制该网址。

        2.在您的机器上转到“转到文件夹”粘贴网址。

        3.Library > 应用支持

        那是你的 sql 文件所在的位置。

        希望对您有所帮助!

        【讨论】:

          【解决方案6】:

          准确的说,你可以在这个路径中找到本地db。

          /Users/jacob/Library/Developer/CoreSimulator/Devices/BBD9ED33-F903-4349-BB7F-A5A6F89DACC8/data/Containers/Data/Application/CF308117-7C0E-4A77-872F-93A02EA76F5F/Library/LocalDatabase
          

          其中,BBD9ED33-F903-4349-BB7F-A5A6F89DACC8 和 CF308117-7C0E-4A77-872F-93A02EA76F5F 可以更改。

          【讨论】:

            【解决方案7】:

            如果您不想(或不能)打印应用程序的目录,可以在 Finder 中进行简单搜索。

            在 Finder 中,打开此文件夹: /Users/{yourUsername}/Library/Developer/CoreSimulator/Devices

            如果您知道数据库的名称,请使用 Finder 的搜索来搜索数据库的文件名。

            如果您不知道数据库的名称,请使用 Finder 的搜索来搜索“LocalDatabase”。搜索结果中可能会出现多个“LocalDatabase”目录,但如果您仔细查看它们,您应该能够将其范围缩小到您正在查找的数据库的最后修改日期。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-12-03
              • 1970-01-01
              • 2016-01-04
              • 2017-11-04
              • 1970-01-01
              • 2012-08-05
              相关资源
              最近更新 更多