【问题标题】:Where Does Simulator 8.0 Store FilesSimulator 8.0 在哪里存储文件
【发布时间】:2014-07-24 05:25:15
【问题描述】:

我在 Xcode-6 Beta for IOS 8 中找不到新模拟器数据的目录

它不在 ~/Library/Application Support/iPhone Simulator/

Where does the iPhone Simulator store its data?

【问题讨论】:

标签: ios-simulator ios8 xcode6


【解决方案1】:

类似这样的:

/Users/{YOUR NAME}/Library/Developer/CoreSimulator/Devices/{DEVICE ID}/data/Containers/Data/Application/{APPLICATION ID}/

设备 ID 可能有点难以找到(基本上,您拥有的每个模拟器都有一个具有随机名称的文件夹)。为了找到正确的文件夹,我使用了这个终端命令:

find ~ -name myFile.txt

myFile.txt 是我的应用程序中的文件之一。然后终端打印出完整的位置——如果你有一个可以搜索的文件(或者,可以制作一个),这对你来说可能比逐个检查更有用。

【讨论】:

  • IIRC,在 apple.stackexchange.com 上他们不允许这样的问题(在 NDA 下的产品上)
  • 如果您的应用程序使用 CoreData,一个绝妙的技巧是搜索 sqlite 文件的名称。找到 ~ -name my_app_db_name.sqlite
  • 您如何知道 APPLICATION ID?
  • 您可以在 xCode 的设备列表中找到设备 ID。您可以转到 xCode->Window->Devices 或按 ⇧⌘2 (Shift+Command+2) 按钮。然后选择你需要的模拟器,选中它,在Device Information下查看Identifier
【解决方案2】:

在 XCode 6 中很难找到。但我这样做很简单:

打开 XCode 后,只需在 Debug Area 中写入:

po [NSBundle mainBundle]

或记录:

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

结果是这样的:

之后,您可以打开终端应用程序并使用以下命令转到路径:

打开你的AppPath...


[更新]

我发现了一个很棒的应用程序:http://simpholders.com/

【讨论】:

  • 这是最好的答案!
  • Swift 3 - po Bundle.main
【解决方案3】:

要在 iOS 8 Simulator 中找到应用的 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

【讨论】:

    【解决方案4】:

    好的,尝试手动查找内容让我很沮丧。我会把我的笔记放在上面,以显示什么似乎不起作用。

    SimPHolders 是有效的,并且让我感到非常欣慰。去谷歌上查询。下载它。运行。享受吧。

    【讨论】:

      【解决方案5】:

      XCode6 中的 Simulators 目录移动到:

      Library ▸ Developer ▸ CoreSimulator
      

      应用程序文件夹的完整路径:

      ~/ ▸ Library ▸ Developer ▸ CoreSimulator ▸ Devices ▸ 5D71993D-78C2-49F4-9B30-99D0307D3A2F ▸ data ▸ Containers ▸ Data ▸ Application ▸ AE50273B-993C-45DA-97E8-3F88E4B64BDE ▸ Documents ▸ xyz.sqlite
      

      【讨论】:

        【解决方案6】:

        打开模拟器,进入硬件->设备->管理设备。

        一个窗口显示,概述了每个可用的模拟器,以及每个模拟器的唯一标识符。

        因此,在您在 Finder 中导航到 ~Library/Developer/CoreSimulator 后,您可以通过查找唯一标识符来判断其中的哪个目录包含您想要的模拟器。

        进入那里后,您仍然需要进一步深入...在我的情况下,我发现我必须导航到数据/容器/数据/应用程序,然后在里面查找具有今天日期的文件夹。

        终于!我来到了我熟悉的 Documents 和 Library 文件夹。

        再次感谢 Apple,让我们 i​​OS 开发人员获得了丰厚的就业机会!

        【讨论】:

        • 但是!还是个谜。因为在我删除了那个数据目录的内容(例如Library/Caches)之后,我再次在模拟器中运行我的应用程序,并且内容永远不会重新填充。
        【解决方案7】:

        您可以在应用程序委托“didFinishLaunchingWithOptions”方法中添加 NSLog,以便它们打印您的路径

        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
        #if TARGET_IPHONE_SIMULATOR
            NSLog(@"APP BUNDLE :: %@", [NSBundle mainBundle]);
            NSLog(@"APP DOCUMENTS :: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
        #endif
        ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-20
          • 2016-03-14
          • 2013-10-02
          相关资源
          最近更新 更多