我的sqlite数据存储在iOS模拟器中的哪个位置?

时间:2016-08-31 05:22:02

标签: ios sqlite cordova ios-simulator

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

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

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

7 个答案:

答案 0 :(得分:6)

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
var docsDir = dirPaths[0]

print(docsDir)

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

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

答案 1 :(得分:3)

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

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

  1. 在控制台

  2. 中打印我的sqlite文件的url
  3. 复制网址

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

  5. 粘贴网址并按Enter键

  6. 然后将显示sql文件。

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

    你也可以找到该文件。

答案 2 :(得分:1)

这是我应用的文件夹:

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

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

#include <boost/spirit/home/x3.hpp> #include <boost/fusion/adapted/std_tuple.hpp> #include <iostream> #include <string> #include <vector> int main(int argc, char** argv) { std::string const str{"75428 Marston, Edward"}; std::tuple<int, std::string, std::string> data; using namespace boost::spirit::x3; auto beg = std::begin(str), end(std::end(str)); auto ret = parse(beg, end, int_ >> ' ' >> +~char_(',') >> ", " >> +char_ >> (eol | eoi), data); if(ret && (beg==end) ) std::cout << "Parse done : " << std::get<0>(data) << " " << std::get<1>(data) << " " << std::get<2>(data) << "\n"; else std::cout << "Parse failed : '" << std::string(beg, std::next(beg, 5) ) << "'\n"; return 0; }

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

答案 3 :(得分:0)

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

1.copy that url。

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

3.Library&gt;申请支持

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

希望它有所帮助!

答案 4 :(得分:0)

准确地说,您可以在此路径中找到本地数据库。

/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可以更改。

答案 5 :(得分:0)

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

在Finder中,打开此文件夹: /用户/ {yourUsername} /库/开发商/ CoreSimulator /设备

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

OR

如果您不知道数据库的名称,请使用Finder的搜索来搜索&#34; LocalDatabase&#34;。可能有几个&#34; LocalDatabase&#34;显示在搜索结果中的目录,但如果您仔细查看它们,则应该能够将其缩小到您在上次修改日期之前查找的数据库。

答案 6 :(得分:0)

独立应用

从 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 调试信息。