iOS 8 Beta模拟器的文档目录路径

时间:2014-08-08 08:13:17

标签: ios ios8 ios-simulator

在iOS 7中,可以在以下位置找到iOS模拟器的文档目录:

/Users/Sabo/Library/Application Support/iPhone Simulator/

但是,在 iOS 8 Beta模拟器中,我在上面的目录中找不到 iOS 8 的相应目录。

iOS 8 Simulator的文档目录路径在哪里?

enter image description here

21 个答案:

答案 0 :(得分:147)

在我的电脑上,路径是:

~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/

注意: 可能是您计算机上的长ID(即UDID)不同。

答案 1 :(得分:71)

NSLog代码位于" AppDelegate"的某处,运行您的项目并按照路径行进。这对于您来说很容易获取文档而不是随机搜索内容"〜/ Library / Developer / CoreSimulator / Devices /"

<强>目标C

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

<强>夫特
如果您使用的是Swift 1.2,请使用下面的代码,由于#if #endif阻止,因此在使用模拟器时只会在开发中输出:

#if arch(i386) || arch(x86_64)
  let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString
  NSLog("Document Path: %@", documentsPath)
#endif

从&#34; / Users / ankur / Library / Developer / CoreSimulator / Devices / 7BA821 ...&#34;复制路径转到&#34; Finder &#34;然后&#34; 转到文件夹&#34;或者命令 + shift + g 并粘贴你的路径,让mac带你到你的文件目录:)

答案 2 :(得分:35)

AppDelegate - >&gt;中编写以下代码的 didFinishLaunchingWithOptions
目标C

#if TARGET_IPHONE_SIMULATOR 
// where are you? 
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); 
#endif 


Swift 2.X

if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
    print("Documents Directory: " + documentsPath)   
}

Swift 3.X

#if arch(i386) || arch(x86_64)
    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: \(documentsPath)")
    }
#endif

Swift 4.2

#if targetEnvironment(simulator)
    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: \(documentsPath)")
    }
#endif

<强>输出
/用户/ mitul_marsonia /库/开发商/ CoreSimulator /设备/ E701C1E9-FCED-4428-A36F-17B32D32918A /数据/容器/数据/应用/ 25174F64-7130-4B91-BC41-AC74257CCC6E /文件

复制路径“/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A ...”转到“Finder”然后“转到文件夹”或命令+ shift + g并粘贴你的路径,让mac带你到你的文件目录

答案 3 :(得分:16)

我推荐一款名为SimPholders的实用应用程序,它可以让您在开发iOS应用程序时轻松找到文件和文件夹。它有一个新版本可以使用名为SimPholders2的新模拟器。它可以在simpholders.com

找到

答案 4 :(得分:14)

尽管这里有很多答案,但它们都没有提供对iOS 8.3模拟器的文件夹结构如何变化的理解,也没有提供快速查找应用程序数据(文档文件夹)的方法。

从iOS 8开始,App的数据存储文件夹与App的可执行文件是分开的,而iOS 7及以下版本具有相同的文件夹结构,唯一的区别在于所有模拟器(不同类型和版本)现在在一个大文件夹中。

因此,iOS 8,7,6模拟器的路径如下:

~/Library/Developer/CoreSimulator/Devices

现在每个模拟器都包含在一个以唯一标识符命名的文件夹中,该标识符在模拟器的每次重置时都会发生变化。

您可以为每个设备找到Identifier&amp;模拟器转到Xcode > Window > Devices(标识符的前3或4个字符足以记住)。

要查找已安装应用程序的应用程序,请查看Run scheme > devices(屏幕2)。

screen 1

screen 2

现在,在确定模拟器后,根据其版本,文件夹结构会有很大不同:

在iOS 8 上,应用的可执行文件和数据文件夹位于不同的文件夹中:

<强>可执行~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID]

数据文件夹~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/

文件夹~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/Documents

iOS 7 上,文件夹结构与以前相同,只记得现在每个模拟器都在同一个文件夹中(见上文)。

答案 5 :(得分:12)

如果您的应用使用CoreData,一个很好的技巧是使用终端搜索sqlite文件的名称。

find ~ -name my_app_db_name.sqlite

结果将列出运行您应用的任何模拟器的完整文件路径。

我真的希望Apple只是在iOS模拟器文件菜单中添加一个按钮,例如&#34;在Finder&#34;中显示文档文件夹。

答案 6 :(得分:11)

我们需要查看路径〜/ Library / Developer / CoreSimulator / Devices /是正确的。

但我看到的问题是每次运行应用程序时路径都在不断变化。该路径在Application字符串后面包含另一组长ID,并且每次运行应用程序时都会不断更改。 这基本上意味着我的应用程序在下次运行时不会有任何缓存数据。

答案 7 :(得分:7)

使用iOS 9.2和Xcode 7.2,以下脚本将打开上次使用的模拟器上最后安装的应用程序的Documents文件夹;

cd ~/Library/Developer/CoreSimulator/Devices/
cd `ls -t | head -n 1`/data/Containers/Data/Application 
cd `ls -t | head -n 1`/Documents
open .

要创建一个简单的可运行脚本,请使用&#34;运行Shell脚本&#34;将其放入Automator应用程序中:

Run Shell Script inside Automator Application

答案 8 :(得分:7)

在Xcode 6.0中采用CoreSimulator,数据目录是每个设备而不是每个版本。数据目录是〜/ Library / Developer / CoreSimulator / Devices //数据,可以从&#39; xcrun simctl list&#39;

确定

请注意,如果您不打算回滚到Xcode 5.x或更早版本,可以安全地删除〜/ Library / Application Support / iPhone Simulator和〜/ Library / Logs / iOS Simulator。

答案 9 :(得分:5)

更新: Xcode 7.2•Swift 2.1.1

if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
    print(documentsPath)   // "var/folder/.../documents\n" copy the full path
}

转到你的Finder按下命令shift-g(或转到菜单栏下的Go to Folder ...)并在那里粘贴完整路径“var / folder /.../ documents”并按go。

答案 10 :(得分:4)

尝试~/Library/Developer/CoreSimulator/Devices/

答案 11 :(得分:4)

当我使用CoreData存储完整路径时,我遇到了同样的问题。检索完整路径时,它返回null,因为每次应用程序重新启动时文档文件夹UUID都不同。以下是我的决议:

  1. 确保仅在CoreData中存储文档/文件的相对路径。例如。存储“Files / image.jpg”而不是“/ Users / yourname /.../ Applications / UUID / Document / Files / image.jpg”。
  2. 使用以下内容检索应用文档位置:

      

    [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

  3.   
  4. 连接#2和#1以获取要检索的文档/文件的完整路径。
  5.      您可以参考Apple Developer Note:   https://developer.apple.com/library/ios/technotes/tn2406/_index.html

答案 12 :(得分:4)

模拟器位于:

~/Library/Developer/CoreSimulator/

此处,它们被列为具有UUID名称的目录。使用“修改日期”排序来查找最新的排序。内部导航到:

/data/Containers/Data/Application/

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

注意:每次运行应用时,Xcode都会更改目录名称,因此请不要依赖在桌面上进行别名/快捷方式。

最简单的方法是使用应用here,它会自动执行所有操作。

答案 13 :(得分:3)

在Appdelegate中,将此代码放在Document and Cache Dir中:

#if TARGET_IPHONE_SIMULATOR
    NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
    NSArray* cachePathArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString* cachePath = [cachePathArray lastObject];
    NSLog(@"Cache Directory: %@", cachePath);
#endif
日志上的

文件目录: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46- BFC3-58EB64D4BCCB /文档/

缓存目录: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46- BFC3-58EB64D4BCCB /库/缓存

答案 14 :(得分:3)

基于Ankur的回答,但对我们Swift用户来说:

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

将它放在ViewDidLoad中,它会在执行应用程序后立即打印出来。

答案 15 :(得分:3)

如果您想进入应用文件夹查看正在进行的操作并且不想通过迷宫般的UUDID,我就这样做了:https://github.com/kallewoof/plget < / p>

并使用它,我做了这个:https://gist.github.com/kallewoof/de4899aabde564f62687

基本上,当我想去某个应用程序的文件夹时,我会这样做:

$ cd ~/iosapps
$ ./app.sh
$ ls -l
total 152
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 My App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/BD660795-9131-4A5A-9A5D-074459F6A4BF
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 Other App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/A74C9F8B-37E0-4D89-80F9-48A15599D404
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 My App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/07BA5718-CF3B-42C7-B501-762E02F9756E
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 Other App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/5A4642A4-B598-429F-ADC9-BB15D5CEE9B0
-rwxr-xr-x  1 me  staff  3282 Nov 14 17:04 app.sh
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/69F7E3EF-B450-4840-826D-3830E79C247A
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/976D1E91-DA9E-4DA0-800D-52D1AE527AC6
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/473F8259-EE11-4417-B04E-6FBA7BF2ED05
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/CB21C38E-B978-4B8F-99D1-EAC7F10BD894
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.otherapp-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/DE3FF8F1-303D-41FA-AD8D-43B22DDADCDE
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-7-1_iPad-Retina.dr -> simulator/4DC11775-F2B5-4447-98EB-FC5C1DB562AD/data
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-8-0_iPad-2.dr -> simulator/6FC02AE7-27B4-4DBF-92F1-CCFEBDCAC5EE/data
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-8-0_iPad-Retina.dr -> simulator/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-8-1_iPad-Retina.dr -> simulator/414E8875-8875-4088-B17A-200202219A34/data
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 org.cocoapods.demo.pajdeg-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/C3069623-D55D-462C-82E0-E896C942F7DE
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 simulator -> /Users/me/Library/Developer/CoreSimulator/Devices

./app.sh部分同步链接。现在基本上总是必要的,因为应用程序在Xcode中从6.0开始每次运行都会更改UUID。此外,遗憾的是,应用程序的捆绑ID为8.x,应用程序名称为&lt; 8.

答案 16 :(得分:3)

iOS 8模拟器的文档目录在哪里

你可能已经注意到iPhone模拟器已经改变了Xcode 6,当然还有 - 模拟应用程序文档目录的路径。有时我们可能需要看看它。

找到那条路并不像以前那么容易,即图书馆/应用程序支持/ iPhone模拟器/ 7.1 /应用程序/后跟一个代表你的应用程序的神秘数字。

从Xcode 6和iOS 8开始,你可以在这里找到它: Library / Developer / CoreSimulator / Devices / cryptic number / data / Containers / Data / Application / cryptic number

http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/

答案 17 :(得分:2)

找到路径的最佳方法是通过代码完成。

使用Swift,只需将下面的代码粘贴到 AppDelegate.swift

中的应用程序中。
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsPath = paths.first as String
println(documentsPath)

对于Obj-C代码,请查看@Ankur的答案

答案 18 :(得分:2)

模拟器目录已随Xcode 6 beta移动到...

 ~/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

答案 19 :(得分:1)

适用于Swift 3.x

if let documentsPath = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: " + documentsPath)
    }

答案 20 :(得分:1)

iOS 11

if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                                           .userDomainMask,
                                                           true).first {
    debugPrint("documentsPath = \(documentsPath)")
}