我正在开发一个使用内置SQLite数据库的iPhone应用程序。我正在尝试通过sqlite3
命令行工具查看和打开数据库,这样我就可以对它执行任意SQL。
当我在模拟器中运行我的应用时,它创建的.sqlite
文件位于~/Library/Application Support/iPhone Simulator/User/Applications/
。
如何在物理iPhone上看到该文件?
答案 0 :(得分:69)
Xcode 6.0.1的说明
答案 1 :(得分:43)
在Xcode中选择窗口 - >组织者,然后在手机的应用程序部分中展开应用程序旁边的节点。选择应用程序数据旁边的黑色向下箭头,并将文件保存在桌面上的任何位置。你的sqlite数据库应该在某处。
关于如何在完成后重新使用手机,我不知道。
答案 2 :(得分:2)
在XCode 4中,您可以像所建议的休息室一样,这会将您应用的整个文件结构保存到您选择的目的地。重命名保存为.sqlite的.xcappdata文件,这样您可以通过双击打开它,然后就可以从设备中找到该文件。
答案 3 :(得分:2)
如果你越狱你的iPhone,这个有用吗。我不知道为什么有人会越狱他们的手机有任何问题,因为我已经使用它开发很长一段时间并且发现没有问题,也不是设备与模拟器上的sqlite不常见perform differently:
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语句..无需复制或其他任何内容。
答案 4 :(得分:1)
与您在模拟器上完全相同的方式。设备和模拟器之间的差异很小(很重要),文件访问和库加载大部分都不是它们的一部分。
答案 5 :(得分:0)
你的问题仍然有点模糊。 “看”在什么意义上?你创建SQLite数据库了吗?怎么样?您是否已将其手动放入模拟器的文件系统区域?您是否可能会问如何在iPhone上执行此操作?
最简单的方法是使用sqlite3命令行工具预创建一个空数据库,将其作为应用程序中的资源,然后将其复制到应用程序沙箱的文档文件夹中。您可以通过NSBundle的pathForResource:ofType:方法获取资源文件夹的路径,然后通过NSUserDomainMaskMask中NSDocumentsDirectory文件夹的NSSearchPathForDirectoriesInDomains()获取Documents文件夹的路径,然后通过NSFileManager的方法复制文件。
否则,您可以使用SQLite的函数通过提供适当的SQL命令来定义其架构,从头开始创建新数据库。
答案 6 :(得分:0)
到目前为止,最简单的方法是使用iExplorer从您的应用程序下载文件。然后使用SQLite Professional read-only来读取文件。 甚至认为它不是实时的,但至少它是免费的。 : - )
答案 7 :(得分:0)
下载容器方法是我发现的最好的方法。但是,您必须要小心,如果您尝试通过电子邮件发送或从应用程序中附加它,那么发出的文件将为空。