我有一个SQLite数据库,用于存储应用程序数据,我需要查看其中的内容以调试遇到的问题。但是iPhone模拟器通常将其数据存储在哪个位置呢?
我有一个SQLite数据库,用于存储应用程序数据,我需要查看其中的内容以调试遇到的问题。但是iPhone模拟器通常将其数据存储在哪个位置呢?
针对 Xcode6+/iOS8+:
~/Library/Developer/CoreSimulator/Devices/[设备ID]/data/Containers/Data/Application/[应用ID]/
对于SDK 3.2,接受的答案是正确的 - SDK 4将路径中的/User文件夹替换为每个旧版iPhone OS/iOS版本可以模拟的编号,因此路径变为:
~/Library/Application Support/iPhone Simulator/[操作系统版本]/Applications/[应用程序GUID]/
如果您旁边安装了先前的SDK,则其3.1.x模拟器将继续在以下位置保存数据:
~/Library/Application Support/iPhone Simulator/User/Applications/[应用程序GUID]/
在某个断点处中断程序执行。 (或者像Najdan Tomić在评论中提到的那样,在调试区域上点击暂停)
在控制台窗口中输入po NSHomeDirectory()
(lldb) po NSHomeDirectory() /Users/usernam/Library/Developer/CoreSimulator/Devices/4734F8C7-B90F-4566-8E89-5060505E387F/data/Containers/Data/Application/395818BB-6D0F-499F-AAFE-068A783D9753
错误:预期一个表达式,但发现了额外的输入。 po NSHomeDirectory() ^^^^^^^^^^^^^^^
。po
本身并不存在作为一个命令。 - undefined除了使用终端之外,还有一种(更快的?)方式可以找到应用程序数据所在的位置:
找到了:
~/Library/Application Support/iPhone Simulator/User/
iOS 8 ~/Library/Developer/CoreSimulator/Devices/[设备ID]/data/Applications/[应用GUID]/Documents/
xcrun instruments -s
命令。 - Shazron在 Lion 系统中,Users/[username]/Library
是被隐藏的。
要在 Finder 中查看,点击屏幕顶部的“前往”菜单,并按住“option”键以显示“Library”选项。
点击“Library”即可查看之前被隐藏的库文件夹。
之前建议:
使用
chflags nohidden /users/[username]/library
在终端中显示文件夹。如果模拟器正在运行,您可以获取任何应用程序容器的路径:
xcrun simctl get_app_container booted <app bundle identifier>
示例输出:
$ xcrun simctl get_app_container booted com.example.app
/Users/jappleseed/Library/Developer/CoreSimulator/Devices/7FB6CB8F-63CB-4F27-BDAB-884814DA6FE0/data/Containers/Bundle/Application/466AE987-76BC-47CF-A207-266E65E7DE0A/example.app
“booted”可以替换为大多数需要设备UDID的simctl
命令。
您可以使用xcrun simctl list
查看设备列表,并使用xcrun simctl help
获取有关特定命令的帮助信息。
更新:应广大用户要求,Xcode 8.3中现在可以通过添加“app”、“data”、“groups”或应用程序组标识符来指定所需的容器类型。
要获取数据容器:
$ xcrun simctl get_app_container booted com.example.app data
使用 Xcode 5,您可以使用以下代码:
#import <Foundation/NSFileManager.h>
并且:
NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);
结果可能看起来像:"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"
其中hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh
是一个十六进制字符串,用于标识您的iOS应用程序。
po NSHomeDirectory()
。 - mackworth看起来Xcode 6.0又一次将此位置移动了,至少对于iOS 8模拟器来说。
~/Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/[AppID]
cd ~/Library/Application\ Support/iPhone\ Simulator/
。 - Robertpo NSHomeDirectory()
,然后将结果复制并粘贴到 Go > 转到文件夹(Cmd-Shift-G)中即可。 - mackworthAppDelegate
的didFinishLaunchingWithOptions:
中添加一行代码以使用NSLog
输出它,或者您可以从调试器中键入po NSHomeDirectory()
。无论哪种情况,都要复制字符串并使用Cmd + Shift + G
组合键在finder中打开它。这样做更好,因为您是通过标准命令进行“询问”,而不需要了解某个变化的具体内容。 - Benjohn