263

我有一个用于存储应用程序数据的 SQLite DB,我可以通过查看它来调试我遇到的问题 - 但是 iPhone 模拟器通常在哪里存储它的数据?

4

21 回答 21

314

适用于 Xcode6+/iOS8+

~/Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/[AppID]/

接受的答案对于 SDK 3.2 是正确的 - SDK 4 将该路径中的/User文件夹替换为它可以模拟的每个旧 iPhone OS/iOS 版本的数字,因此路径变为:

~/Library/Application Support/iPhone Simulator/[操作系统版本]/Applications/[appGUID]/

如果您同时安装了以前的 SDK,其 3.1.x 模拟器将继续将其数据保存在:

~/库/应用程序支持/iPhone模拟器/用户/应用程序/[appGUID]/

于 2010-08-16T17:00:53.683 回答
112

还有另一种(更快?)方法可以在没有终端的情况下找到应用数据的位置:

  1. 在模拟器中启动应用程序
  2. 打开活动监视器
  3. 在 CPU 选项卡中找到您的应用程序的名称
  4. 双击它并打开“打开文件和端口”

在此处输入图像描述

于 2014-10-05T10:11:57.570 回答
99

有史以来最简单的方法。

  1. 在某处捕获断点。(或暂停程序执行(在调试区域点击暂停),如评论中提到的 Najdan Tomić)

  2. 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

于 2018-01-12T06:19:20.477 回答
78

找到了:

~/Library/Application Support/iPhone Simulator/User/
于 2009-07-10T07:04:33.577 回答
75

iOS 8 ~/Library/Developer/CoreSimulator/Devices/[设备 ID]/data/Applications/[appGUID]/Documents/

于 2014-08-07T20:10:02.137 回答
65

在狮子上Users/[username]/Library是隐藏的。

要简单地在 Finder 中查看,请单击屏幕顶部的“Go”菜单并按住“alt”键以显示“Library”。

单击“库”,您可以看到以前隐藏的库文件夹。

之前建议:

利用

chflags nohidden /users/[username]/library

在终端中显示文件夹。

于 2011-10-31T01:54:41.080 回答
45

如果模拟器正在运行,您可以获得任何应用程序容器的路径:

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

simctl在任何需要设备 UDID 的地方,“booted”都可以替代大多数命令。

您可以使用 来查看设备列表xcrun simctl list并获得有关特定命令的帮助xcrun simctl help

更新:根据 Xcode 8.3 中的流行请求,您现在可以通过附加“应用程序”、“数据”、“组”或应用程序组标识符来指定所需的容器类型。

获取数据容器:

$ xcrun simctl get_app_container booted com.example.app data
于 2016-11-20T06:41:02.667 回答
37

使用 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 应用程序的十六进制字符串在哪里。

于 2014-04-21T15:56:28.983 回答
31

在模拟器中查找应用程序位置的最简单方法之一。用户“NSTemporaryDirectory()”

脚步-

  1. 在应用程序中的任何位置应用断点并运行应用程序。
  2. 当应用程序在断点处停止时,在 Xcode 控制台中键入以下命令。

    po NSTemporaryDirectory()

请参阅下图以获得正确的见解在此处输入图像描述

现在您有了到临时文件夹的确切路径。您可以返回并查看所有与应用程序相关的文件夹。

希望这也有帮助。快乐编码:)

于 2015-08-19T05:43:56.620 回答
30

看起来 Xcode 6.0 再次移动了这个位置,至少对于 iOS 8 模拟器是这样。

~/Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/[AppID]

于 2014-09-24T22:50:06.787 回答
10

只需这样做:

NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docDirPath);

你会得到这样的想法:

/Users/admin/Library/Developer/CoreSimulator/Devices/58B5B431-D2BB-46F1-AFF3-DFC789D189E8/data/Containers/Data/Application/6F3B985F-351E-468F-9CFD-BCBE217A25FB/Documents

去那里,无论 XCode 的版本如何,您都会看到应用程序的文档文件夹。(在 Finder 中使用“Go to Folder...”命令并指定路径“~/library”)。

字符串路径的 Swift 版本:

let docDirPath =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                    .userDomainMask, true).first
print(docDirPath)

和文件夹 URL:

let docDirUrl =
    FileManager.default.urls(for: .documentDirectory,
                             in: .userDomainMask).first
print(docDirUrl)
于 2016-02-06T15:27:18.333 回答
10

Xcode 2019+ Catalina、Xcode 11.0 中存储模拟器的地方

运行时

$ open ~/Library/Developer/CoreSimulator/Profiles/Runtimes

例如:iOS 13.0, 到目前为止,watchOS 6.0这些占用的空间最多。每个最高可达~5GB

设备

$ open ~/Library/Developer/CoreSimulator/Devices

例如:iPhone Xr, iPhone 11 Pro Max。这些通常每个 <15 mb。

解释

模拟器分为运行时和设备。如果您运行$ xcrun simctl list,您可以看到概览,但如果您想找到这些模拟器的物理位置,请查看我显示的这些目录。

删除您不支持的运行时是完全安全的。如果需要,您可以稍后重新安装。

于 2019-09-13T19:58:49.477 回答
7

在 iOS 5 中:

/Users/[用户名]/Library/Application Support/iPhone Simulator/5.0/Applications/[AppGUID]/

于 2012-03-28T14:28:49.293 回答
6

对于 Xcode 4.6,它存储在以下路径中...

/Users/[currentuser]/Library/Application Support/iPhone Simulator/6.1/Applications/

要以编程方式了解它,请使用以下代码

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);
于 2013-07-29T14:11:57.977 回答
4

对于 iOS 8

要找到Documents文件夹,您可以在 Documents 文件夹中写入一个文件:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"Words.txt"];
NSString *content = @"Apple";
[content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];

说,在didFinishLaunchingWithOptions

然后您可以打开终端并找到文件夹:

$ find ~/Library -name Words.txt
于 2014-07-29T10:55:17.587 回答
2

如果有人在 Lion 中仍然遇到这个问题,有一篇很棒的文章,其中包含 19 个不同的技巧来查看您的 ~/Library 目录。在这里找到 Dan Frakes 的文章http://www.macworld.com/article/161156/2011/07/view_library_folder_in_lion.html

记住模拟器的目录如下

~/库/应用程序支持/iPhone模拟器/用户/

于 2012-01-05T11:58:23.557 回答
2

对于 macOS Catalina,我在以下位置找到了我的数据库:

~/Library/Developer/CoreSimulator/Devices/{deviceId}/data/Containers/Data/Application/{applicationId}/Documents/my.db

为了获得applicationId,我只是按修改日期对文件夹进行了排序,尽管我确信有更好的方法来做到这一点。

于 2019-12-19T14:30:00.867 回答
2

对于不经常使用 Xcode 的 react-native 用户,你可以使用find. 打开终端并使用数据库名称进行搜索。

$ find ~/Library/Developer -name 'myname.db'

如果您不知道确切的名称,您可以使用通配符:

$ find ~/Library/Developer -name 'myname.*'

于 2019-06-26T14:42:13.350 回答
1

我与这个程序没有任何关系,但如果你想在查找器中打开任何这些,SimPholders会非常容易。

于 2019-02-23T02:36:42.527 回答
0

To Open the dictories where you App are that you build in xCode on the simulators, do the following:

  1. open a Finder windor ( smiley face icon )
  2. then click GO -> Go to Folder
  3. type: ~/Library/Application Support/iPhone Simulator
  4. The Directories are the iOS version of the different Simulators
  5. The Sub Directories are the Apps install on the simulator
  6. The Documents folder is where the user generated content which gets backup up onto iCloud
于 2014-08-16T18:41:49.297 回答
0

您可以尝试使用以下代码

NSString *fileName = @"Demo.pdf";
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
    NSLog(@"File path%@",pdfFileName);
于 2013-05-30T07:34:51.060 回答