我正在开发一个使用内置 SQLite 数据库的 iPhone 应用程序。我正在尝试通过sqlite3
命令行工具查看和打开数据库,以便可以对其执行任意 SQL。
当我在模拟器中运行我的应用程序时,.sqlite
它创建的文件位于~/Library/Application Support/iPhone Simulator/User/Applications/
.
如何在物理 iPhone 上查看该文件?
Xcode 6.0.1 使用说明
在 Xcode 中选择 window->organizer 并在手机的应用程序部分中展开应用程序旁边的节点。选择应用程序数据旁边的黑色向下箭头并将文件保存在桌面上的任何位置。您的 sqlite 数据库应该在某处。
至于一旦你完成后如何去把它恢复到手机上,我不知道。
在 XCode 4 中,您按照 Lounges 的建议执行相同的操作,这会将您的应用程序的整个文件结构保存到您选择的目的地。重命名保存为 .sqlite 的 .xcappdata 文件,以便双击打开它,然后您可以从设备中找到该文件。
与您在模拟器上所做的完全相同。设备和模拟器之间几乎没有(重要的)差异,文件访问和库加载大部分不是其中的一部分。
你的问题仍然有点模糊。“看”是什么意思?您是否创建 SQLite 数据库?如何?您是否将其手动放置在模拟器的文件系统区域中?您是否在问如何在 iPhone 上做到这一点?
最简单的方法是使用 sqlite3 命令行工具预先创建一个空数据库,将其作为应用程序中的资源,然后将其复制到应用程序沙箱的文档文件夹中。您可以通过 NSBundle 的 pathForResource:ofType: 方法获取资源文件夹的路径,然后通过 NSSearchPathForDirectoriesInDomains() 为 NSUserDomainMask 中的 NSDocumentsDirectory 文件夹获取 Documents 文件夹的路径,然后通过 NSFileManager 的方法复制文件。
否则,您可以使用 SQLite 的函数从头开始创建一个新数据库,方法是提供适当的 SQL 命令来定义其模式。
如果你越狱你的 iPhone,这个可以工作。我不知道为什么有人会在越狱他们的手机时遇到任何问题,因为我已经使用它进行开发很长一段时间并且没有发现任何问题,对于 sqlite 来说也并不少见在设备与模拟器上执行不同的操作:
which sqlite3
以确保您已安装它浏览到您的数据库的位置..代码中的断点应该告诉您它的位置..在我的代码中它看起来像这样
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex: 0];
NSString *pathName = [documentsDirectory stringByAppendingPathComponent:filename];
return pathName;
请注意,如果您在模拟器上运行它......您将获得如下所示的位置:
/Users/admin/Library/Application Support/iPhone Simulator/6.0/Applications/42302574-7722-48C1-BE00-91800443DA7C/Documents/email-524200.edb
在设备上,它将如下所示:
/var/mobile/Applications/FB73857F-A822-497D-A4B8-FBFB269A8699/Documents/email-523600.edb
然后只需键入sqlite3 %dbname%
,您就可以直接在手机上执行 sql 语句.. 无需复制或其他任何内容。
到目前为止,最简单的方法是使用 iExplorer 从您的应用程序下载文件。然后使用SQLite Professional 只读方式读取文件。甚至认为它不是实时的,但至少它是免费的。:-)
下载容器方法是我发现最好的方法。但是,您必须小心,有时,如果您尝试通过电子邮件发送或从应用程序中附加它,则发送出去的文件将是空的。