我的sqlite数据存储在iOS模拟器中的哪里?

问题描述 投票:0回答:9

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

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

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

ios sqlite cordova ios-simulator
9个回答
19
投票
let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)

let docsDir = dirPaths[0]

print(docsDir)

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

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


8
投票

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

/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


6
投票

独立应用程序

从 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

作为奖励,您还将获得一堆其他核心数据调试信息。


3
投票

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

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

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

  2. 复制网址

  3. 打开取景器并按 cmd + shift + G

  4. 粘贴网址并按 Enter

然后就会显示sql文件。

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

您也可以找到该文件。


2
投票

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

在 Finder 中,打开此文件夹: /用户/{您的用户名}/库/开发人员/CoreSimulator/设备

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

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


0
投票

在应用程序的控制台上输入“po NSUserDirectory”,它将返回所有模拟器文件所在的 URL。

1.复制该网址。

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

3.图书馆 > 应用支持

这就是你的 sql 文件所在的位置。

希望有帮助!


0
投票

准确的说,你可以在这个路径中找到本地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可以更改。


0
投票

接受的答案和其他答案不考虑应用程序组。找到确切位置的最简单方法是从您的

defaultDirectoryURL()
获取
NSPersistentContainer

您可以在此处查看文档。

注意事项:

  • 这是一个
    class func
    ,可以被子类覆盖。因此,如果您的应用程序正在使用子类,请确保在子类上调用它。
  • 此方法返回每个平台的确切位置。

0
投票

除此之外,一旦您到达正确的库文件夹(对我来说是隐藏的,我必须使用 CMD + SHIFT + G),您就可以在终端中打开一个文件夹并运行以下命令:

找到。 -type f -name "name-of-your.db"

© www.soinside.com 2019 - 2024. All rights reserved.