在iOS 7中,可以在以下位置找到iOS模拟器的文档目录:
/Users/Sabo/Library/Application Support/iPhone Simulator/
但是,在iOS 8 Beta Simulator中,我在上面的目录中找不到iOS 8的相应目录。
iOS 8 Simulator的文档目录路径在哪里?
在iOS 7中,可以在以下位置找到iOS模拟器的文档目录:
/Users/Sabo/Library/Application Support/iPhone Simulator/
但是,在iOS 8 Beta Simulator中,我在上面的目录中找不到iOS 8的相应目录。
iOS 8 Simulator的文档目录路径在哪里?
Answers:
在我的计算机上,路径为:
~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/
注意:可能您计算机上的那些长ID(即UDID)不同。
NSLog
下面的代码在“ AppDelegate”中的某处,运行您的项目并遵循路径。这比起在“〜/ Library / Developer / CoreSimulator / Devices /”中随机搜索而不是随机搜索文档更为容易。
目标C
NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
Swift
如果使用的是Swift 1.2,请使用以下代码,由于存在以下#if
#endif
块,该代码仅在使用Simulator时在开发中输出:
#if arch(i386) || arch(x86_64)
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString
NSLog("Document Path: %@", documentsPath)
#endif
从“ / Users / ankur / Library / Developer / CoreSimulator / Devices / 7BA821 ...”复制路径,转到“ Finder ”,然后“ 转到文件夹 ”或command+ shift+ g粘贴路径,让mac将您带到文件目录:)
只需在AppDelegate中编写以下代码-> didFinishLaunchingWithOptions 目标C
#if TARGET_IPHONE_SIMULATOR
// where are you?
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
#endif
斯威夫特2.X
if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
print("Documents Directory: " + documentsPath)
}
斯威夫特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
斯威夫特4.2
#if targetEnvironment(simulator)
if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
print("Documents Directory: \(documentsPath)")
}
#endif
输出
/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A / data / Containers / Data / Application / 25174F64-7130-4B91-BC41-AC74257CCC6E / Documents
将路径从 “ / Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A ...”复制到“ Finder”,然后“转到文件夹”或命令+ shift + g和粘贴您的路径,让Mac将您带到文档目录
我推荐一个名为SimPholders的实用工具应用程序,它可以在开发iOS应用程序时轻松查找文件和文件夹。它具有一个新版本,可与名为SimPholders2的新模拟器一起使用。可以在simpholders.com上找到
尽管这里有很多答案,但没有一个答案能帮助您了解iOS 8.3模拟器的文件夹结构如何变化,并且无法提供一种快速找到应用程序数据(文档文件夹)的方法。
由于iOS 8,应用程序的数据存储文件夹与应用程序的可执行文件是分开的,而iOS 7和更低版本的文件夹具有相同的文件夹结构,唯一的区别是所有模拟器(不同类型和版本)都是现在放在一个大文件夹中。
因此,iOS 8,7,6模拟器的路径如下:
~/Library/Developer/CoreSimulator/Devices
现在,每个模拟器都包含在一个具有唯一标识符的文件夹中,该文件夹在每次重置模拟器时都会更改。
您可以通过以下步骤找到Identifier
每个设备和模拟器Xcode > Window > Devices
的标识符(标识符的前3个或第4个字符足以记住)。
要查找已在其上安装应用程序的应用程序,请查看您的Run scheme > devices
(屏幕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及更低版本上,文件夹结构与以前相同,只记得现在每个模拟器都在同一个文件夹中(请参见上文)。
如果您的应用程序使用CoreData,则一个不错的技巧是使用终端搜索sqlite文件的名称。
find ~ -name my_app_db_name.sqlite
结果将列出运行您的应用程序的所有模拟器的完整文件路径。
我真的希望Apple可以在iOS Simulator文件菜单中添加一个按钮,例如“ Finder中的“显示文档”文件夹”。
正确的是,我们需要查看〜/ Library / Developer / CoreSimulator / Devices /路径。
但是我看到的问题是,每次运行该应用程序时,路径都会不断变化。该路径在Application字符串之后包含另一组长ID,每次我运行该应用时,该ID都会不断变化。这基本上意味着我的应用程序下次运行时将没有任何缓存的数据。
随着Xcode 6.0中CoreSimulator的采用,数据目录是按设备而不是每个版本的。数据目录为〜/ Library / Developer / CoreSimulator / Devices // data,可从“ xcrun simctl list”确定
请注意,如果您不打算回滚到Xcode 5.x或更早版本,则可以安全地删除〜/ Library / Application Support / iPhone Simulator和〜/ Library / Logs / iOS Simulator。
更新:Xcode 11.5•Swift 5.2
if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
print(documentsPath) // "var/folder/.../documents\n" copy the full path
}
转到Finder,然后按command-shift-g(或菜单栏下的“转到”>“转到文件夹...”),然后将完整路径“ var / folder /.../ documents”粘贴到此处,然后按go。
当我使用CoreData存储完整路径时,我遇到了同样的问题。检索完整路径时,它返回null,因为每次应用程序重新启动时,文档文件夹UUID都会不同。以下是我的解决方案:
[[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
iOS 8模拟器的文档目录在哪里
您可能已经注意到,iPhone模拟器已随Xcode 6进行了更改,当然,它也已更改为模拟应用程序的“文档目录”的路径。有时我们可能需要看看它。
找到该路径并不像以前那样容易,即找到Library / Application Support / iPhone Simulator / 7.1 / Applications /,然后是代表您应用程序的神秘数字。
从Xcode 6和iOS 8开始,您将在这里找到它:库/开发人员/ CoreSimulator /设备/密码/数据/容器/数据/应用程序/密码
http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/
在Appdelegate中,将以下代码放入文档和缓存目录中:
#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 / Documents /
缓存目录: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Library / Caches
如果您想进入应用程序文件夹以查看正在发生的事情,并且不想通过迷宫式UUDID进行操作,我可以这样做:https : //github.com/kallewoof/plget
并使用它,我做了这个: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
部件同步链接。从现在开始,基本上必须始终如此,因为从6.0版开始,应用每次Xcode的运行都会更改UUID。另外,不幸的是,对于8.x,应用程序的捆绑包ID为<8。