我在xCode(使用PhoneGap)上使用sqlite插件创建了一个iPad应用程序,存储了数据,然后当我想查看我存储的数据时,我找不到保存它的位置。根据我网上查的,应该在/Library/Developer/CoreSimulator/Device下
但是,当我导航到 /CoreSimulator 文件时,我没有看到子文件夹“/Device”,只有“/Profiles/Runtimes”?
当我重新打开应用程序并想要检查我存储的数据时,我也看不到它们。
let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let docsDir = dirPaths[0]
print(docsDir)
获取调试器中打印的路径,复制它,打开Finder并按Cmd+Shift+G。将打开“转到文件夹”对话框并粘贴路径,然后按 Enter 键。您将被导航到该文件夹。项目中创建的所有文档都将出现在该文件夹中,包括 .sqlite 文件。不要尝试手动导航到该文件夹。您可能正在查看错误的文件夹。
也不必担心每次 Xcode 都会打印不同的路径。这是从 Xcode 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
独立应用程序
从 Swift 4+ 开始,在某处添加断点来停止代码,然后在控制台中:
po FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
然后您可以在子目录之一中找到一个 sqlite 文件。它可能会有所不同,具体取决于 iOS 版本。
如果您使用应用程序组(或独立应用程序的替代方法)
如果多个应用之间共享数据,则上述方法不起作用。但如果你只是没有找到 sqlite 文件,你也可以按照这个方法。
您可以让 Xcode 打印路径:
Product > Scheme > Edit Scheme > Run > Arguments
-com.apple.CoreData.SQLDebug 1
参数下次启动应用程序时,您应该在日志输出中看到类似以下内容:
CoreData: annotation: Connecting to sqlite database file at /Users/***/Library/Developer/CoreSimulator/Devices/****/data/Containers/****/YourAppName.sqlite
作为奖励,您还将获得一堆其他核心数据调试信息。
我在使用核心数据时也遇到同样的问题,
我如何通过以下步骤解决问题:
在控制台中打印我的sqlite文件的url
复制网址
打开取景器并按 cmd + shift + G
粘贴网址并按 Enter
然后就会显示sql文件。
我没有使用PhoneGap,但是如果你可以从SDK打印sql文件url,
您也可以找到该文件。
如果您不想(或不能)打印应用程序的目录,您可以在 Finder 中进行简单的搜索。
在 Finder 中,打开此文件夹: /用户/{您的用户名}/库/开发人员/CoreSimulator/设备
如果您知道数据库的名称,请使用 Finder 的搜索来搜索数据库的文件名。
或
如果您不知道数据库的名称,请使用Finder的搜索来搜索“LocalDatabase”。搜索结果中可能会出现多个“LocalDatabase”目录,但是如果您仔细查看它们,您应该能够根据上次修改日期将其范围缩小到您要查找的数据库。
在应用程序的控制台上输入“po NSUserDirectory”,它将返回所有模拟器文件所在的 URL。
1.复制该网址。
2.在您的计算机上转到“转到文件夹”,粘贴网址。
3.图书馆 > 应用支持
这就是你的 sql 文件所在的位置。
希望有帮助!
准确的说,你可以在这个路径中找到本地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可以更改。
接受的答案和其他答案不考虑应用程序组。找到确切位置的最简单方法是从您的
defaultDirectoryURL()
获取 NSPersistentContainer
。
您可以在此处查看文档。
注意事项:
class func
,可以被子类覆盖。因此,如果您的应用程序正在使用子类,请确保在子类上调用它。除此之外,一旦您到达正确的库文件夹(对我来说是隐藏的,我必须使用 CMD + SHIFT + G),您就可以在终端中打开一个文件夹并运行以下命令:
找到。 -type f -name "name-of-your.db"