iPhone模拟器在哪里存储数据?

时间:2009-07-10 06:57:14

标签: iphone ios-simulator

我有一个用于存储应用数据的SQLite数据库,我可以查看它来调试我遇到的问题 - 但是iPhone模拟器在哪里存储其数据,通常是什么? / p>

21 个答案:

答案 0 :(得分:268)

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

  

〜/ Library / Application Support / iPhone Simulator / [OS version] / Applications / [appGUID] /

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

  

〜/ Library / Application Support / iPhone模拟器/用户/应用程序/ [appGUID] /

适用于Xcode6和iOS8

  

〜/库/开发商/ CoreSimulator /设备/ [的DeviceID] /数据/容器/数据/应用/ [的AppID] /

答案 1 :(得分:78)

找到它:

~/Library/Application Support/iPhone Simulator/User/

答案 2 :(得分:77)

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

  1. 在模拟器中启动应用
  2. 打开活动监视器
  3. 在CPU标签中找到您的应用名称
  4. 双击它并打开"打开文件和端口"
  5. enter image description here

答案 3 :(得分:72)

iOS 8 〜/ Library / Developer / CoreSimulator / Devices / [Device ID] / data / Applications / [appGUID] / Documents /

答案 4 :(得分:66)

狮子会隐藏Users/[username]/Library

要在Finder中查看,请点击屏幕顶部的“转到”菜单,然后按住“alt”键以显示“图书馆”。

点击“图书馆”,您可以看到以前隐藏的图书馆文件夹。

之前建议:

使用

chflags nohidden /users/[username]/library

在终端中显示文件夹。

答案 5 :(得分:31)

使用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应用的一些十六进制字符串。

答案 6 :(得分:30)

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

  

〜/库/开发商/ CoreSimulator /设备/ [的DeviceID] /数据/容器/数据/应用/ [的AppID]

答案 7 :(得分:30)

最简单的方式。

  1. 在某个地方赶上一个断点。

  2. 控制台窗口中输入 po NSHomeDirectory()

  3. 结果:

      

    (lldb) po NSHomeDirectory()   /用户/ usernam /库/开发商/ CoreSimulator /设备/ 4734F8C7-B90F-4566-8E89-5060505E387F /数据/容器/数据/应用/ 395818BB-6D0F-499F-的αAFE-068A783D9753

答案 8 :(得分:29)

查找应用在模拟器中的位置的最简单方法之一。用户&#34; NSTemporaryDirectory()&#34;

步骤 -

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

    po NSTemporaryDirectory()

  3. 请参阅下面的图片,了解正确的见解enter image description here

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

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

答案 9 :(得分:29)

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

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

答案 10 :(得分:7)

在iOS 5中:

/ Users / [User Name] / Library / Application Support / iPhone Simulator / 5.0 / Applications / [AppGUID] /

答案 11 :(得分:6)

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

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

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

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);

答案 12 :(得分:6)

只需这样做:

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

你会得到这样的想法:

  

/用户/管理员/库/开发商/ CoreSimulator /设备/ 58B5B431-D2BB-46F1-AFF3-DFC789D189E8 /数据/容器/数据/应用/ 6F3B985F-351E-468F-9CFD-BCBE217A25FB /文件

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

字符串路径的Swift版本:

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

和文件夹网址:

let docDirUrl =
    FileManager.default.urls(for: .documentDirectory,
                             in: .userDomainMask).first
print(docDirUrl)

答案 13 :(得分:5)

Xcode在2019+ Catalina,Xcode 11.0中存储模拟器的位置

运行时

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

例如:iOS 13.0watchOS 6.0到目前为止占据了最多的空间。每个人最多可容纳约5GB

设备

$ open ~/Library/Developer/CoreSimulator/Devices

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

说明

模拟器在运行时和设备之间分配。如果运行$ xcrun simctl list,则可以看到概述,但是,如果要查找这些模拟器的物理位置,请查看我显示的这些目录。

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

答案 14 :(得分:3)

适用于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

答案 15 :(得分:2)

如果有人还在狮子身上遇到这个问题,那么有一篇很棒的文章有19个不同的提示来查看你的〜/ Library目录。在这里找到Dan Frakes的文章http://www.macworld.com/article/161156/2011/07/view_library_folder_in_lion.html

请记住下面给出了模拟器的目录

〜/ Library / Application Support / iPhone Simulator / User /

答案 16 :(得分:0)

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

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

要获取applicationId,我只是按修改日期对文件夹进行了排序,尽管我确定有更好的方法。

答案 17 :(得分:0)

对于不经常使用Xcode的本地用户,您可以只使用find。打开终端并使用数据库名称进行搜索。

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

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

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

答案 18 :(得分:0)

我与该程序没有任何关系,但是如果您要在查找器SimPholders中打开其中任何一个,将使其非常容易。

答案 19 :(得分:0)

要打开您在模拟器上使用xCode构建应用程序的记录,请执行以下操作:

  1. 打开Finder windor(笑脸图标)
  2. 然后点击GO - &gt;转到文件夹
  3. 类型:〜/ Library / Application Support / iPhone Simulator
  4. 目录是不同模拟器的iOS版本
  5. 子目录是模拟器上的应用程序安装
  6. Documents文件夹是用户生成的内容,可以备份到iCloud

答案 20 :(得分: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);