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

mic*_*090 2 sqlite ios ios-simulator cordova

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

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

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

小智 6

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

/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


Yas*_*ala 6

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

print(docsDir)
Run Code Online (Sandbox Code Playgroud)

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

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


Aro*_*ron 6

独立应用程序

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

po FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
Run Code Online (Sandbox Code Playgroud)

然后您可以在子目录之一中找到一个 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
Run Code Online (Sandbox Code Playgroud)

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


bee*_*ven 3

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

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

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

  2. 复制网址

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

  4. 粘贴网址并按 Enter 键

然后就会显示sql文件。

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

您也可以找到该文件。