Xcode 6 iPhone模拟器应用程序支持位置

在Xcode 6中,我有一个应用程序,我正在使用Core Data,但在iOS 8 iPhone Simulator的应用程序支持中没有文件夹。 我的文件和核心数据sqlite数据库被存储在哪里?

模拟器目录已经移动Xcode 6testing版…

~/Library/Developer/CoreSimulator 

浏览目录到你的应用程序的Documents文件夹有点艰苦,例如,

 ~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite 

我build议你使用SimPholderfind你的模拟器文件。 这是一个菜单栏项目,跟踪您的模拟器应用程序,并让你直接转到他们的文件夹和内容。 这很棒。

我发现SimulatorManager应用程序非常有用。 它直接将您带到安装的模拟器的应用程序文件夹。 我已经尝试过使用7.1,8.0和8.1模拟器。

SimulatorManager作为系统托盘中的图标驻留,并提供“login时启动”选项。

在这里输入图像描述

注意 :这只适用于Xcode 6(在我的情况下为6.1.1)及以上版本。

希望有所帮助!

要知道您的.sqlite文件存储在您的AppDelegate.m中的位置,请添加以下代码

 - (NSURL *)applicationDocumentsDirectory { NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; } 

现在在AppDelegate.m中调用这个方法

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //call here [self applicationDocumentsDirectory]; } 

这在迅速为我工作:

 let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) println("App Path: \(dirPaths)") 

我为此搏斗了一段时间。 简单地到我的本地sqlite数据库成为一个巨大的痛苦。 我编写了这个脚本,并在XCode中创build了一个代码片段。 我把它放在我的appDelegate的appDidFinishLaunching里面。

 //xcode 6 moves the documents dir every time. haven't found out why yet. #if DEBUG NSLog(@"caching documents dir for xcode 6. %@", [NSBundle mainBundle]); NSString *toFile = @"XCodePaths/lastBuild.txt"; NSError *err = nil; [DOCS_DIR writeToFile:toFile atomically:YES encoding:NSUTF8StringEncoding error:&err]; if(err) NSLog(@"%@", [err localizedDescription]); NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; NSString *aliasPath = [NSString stringWithFormat:@"XCodePaths/%@", appName]; remove([aliasPath UTF8String]); [[NSFileManager defaultManager] createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil]; #endif 

这会在驱动器的根目录下创build一个simlink。 (你可能必须自己第一次创build这个文件夹,然后chmod它,或者你可以改变位置到其他地方)然后我安装了xcodeway插件https://github.com/onmyway133/XcodeWay

我修改了一下,这样它可以让我简单地按下cmd + d,它会打开一个finder winder到我当前的应用程序的持久性Documents目录。 这样,不pipeXCode多less次改变你的path,它只会在运行时改变,并且在每次运行时立即更新你的simlink。

我希望这对别人有用!

打开查找器>库>开发者> CoreSimulator>设备

然后从查找器中更改排列图标select添加date

select您的应用>数据>容器>数据>应用>

select你的应用程序>文件> 这是你的数据库文件

在我的情况下:

 /Users/pluto/Library/Developer/CoreSimulator/Devices/A75107D2-A535-415A-865D-978B2555370B/data/Containers/Data/Application/265A12BC-FF5B-4235-B5EF-6022B83754B4/Documents/dboPhotoBucket.sqlite 

否则,这样做:

 NSLog(@"app dir: %@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); 

– 它将打印数据文件夹的完整path。

迅速:

 let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) println("App Path: \(dirPaths)") 

使用Finder – >进入文件夹并input指定的basepath以访问应用程序文件夹

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; NSLog(@"%@",basePath); 

模拟器将文件放入〜/ Library / Developer / CoreSimulator / Devices / …中,但是/ Devices之后的path对于每个人都是不同的。

使用这个方便的方法。 它返回当前用户临时目录的path,不带任何参数。

 NSString * NSTemporaryDirectory ( void ); 

所以在我的ViewController类中,我通常把这一行放在我的viewDidLoad中,只是为了获取我的CoreData存储文件时的参考。 希望这可以帮助。

  NSLog(@"FILE PATH :%@", NSTemporaryDirectory()); 

(注意:要进入path,在Finder菜单上点击Go并input〜/ Library打开隐藏目录,然后在Finder窗口中点击控制台上显示的path。)

如果使用Swift,这个位置再次发生了变化,请使用它来找出文件夹的位置(这是从Apple为您创build的AppDelegate.swift文件中复制的,因此如果在您的计算机上无法正常工作,请search该文件为正确的语法,这在我的使用Xcode 6.1和iOS 8模拟器):

 let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) println("Possible sqlite file: \(urls)") 

模拟器位于:

~/Library/Developer/CoreSimulator/

在这里,它们被列为具有UUID名称的目录。 使用'修改date'来查找最新的。 里面导航到:

/data/Containers/Data/Application/

在这里,您将获得该设备上所有应用程序的列表。 您可以再次sorting,以获得最新的应用程序。

注意:每次运行应用程序时,Xcode都会更改目录名称,所以不要依赖桌面上的别名/快捷方式。

最简单的方法是使用这里的应用程序,它自动完成所有的事情。

我创build了这个脚本,将压缩为任何模拟器构build的最新应用程序,并将其压缩到桌面。

https://gist.github.com/Gerst20051/8ca49d5afbf09007b3696fab6e9f425c

 #!/bin/bash DESTINATION_DIR="$HOME/Desktop" APP_PATH=$(find ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Bundle/Application/*/*.app -type d -maxdepth 0 -print0 | xargs -0 ls -td | head -n1) APP_DIRNAME=$(dirname "$APP_PATH") APP_BASENAME=$(basename "$APP_PATH") FILE_NAME="${APP_BASENAME%.*}" cd "$APP_DIRNAME" zip -qr "$DESTINATION_DIR/$FILE_NAME.zip" "$APP_BASENAME" 
  1. NSTemporaryDirectory() gives this: /Users/spokaneDude/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/199B1ACA-A80B-44BD-8E5E-DDF3DCF0D8D9/tmp 2. remove "/tmp" replacing it with "/Library/Application Support/<app name>/" --> is where the .sqlite files reside