XCode开发中,如何查看模拟器中的文件


问题产生的原由

在XCode中进行Sqllite的相关开发,需要生成Sqllite数据库,
——

当我们需要通过一些工具查看内部的数据库文件时,此时我们需要解决一个首要问题,
就是获取文件的路径和获取查看此路径的权限


一、模拟器

模拟器是在一个操作系统中,模拟另外一种行为或者动作,并其达到我们想要的效果。
例:XCode自带的iphone模拟器,可以使我们Mac OS 拥有ios操作习惯,
我们可以在Mac os 中模拟在ios中运行各种程序,来达到程序发布前的测试。


二、IOS沙盒模式

在IOS中,IOS应用程序只能在自身的文件区域内进行创建和读取文件,
不可以去其它区域访问和读取文件,
我们把这种文件区域模式称之为”沙盒模式”。
IOS程序通常将图标 声音 图像 视频 程序所生成的文件(例:sqllite数据库)文本文件等程序所需要使用的文件放入这个沙盒区域。
沙盒区域的优点:

1 每个程序都拥有自己的存储空间
2 应用程序不能跨区域访问其它程序沙盒空间中的内容
3 沙盒区域中的文件夹 按权限进行访问,不符合权限将被禁止访问
 

IOS中会为应用程序创建默认的三个文件夹(Documents Library tmp):
  Documents:Apple建议将在程序中建立和程序中浏览到的文件存放在此目录中,iTunes备份和恢复的时候会涉及此目录
  Library:存储程序的默认设置或其它状态信息,iTunes备份和恢复的时候会涉及此目录
Library/Caches:缓存文件;ITunes备份不会涉及此目录
tmp:临时文件;ITunes备份不会涉及此目录,ios重启时,此目录中的文件会丢失

在程序开发中,我们需要根据文件的用途,将文件缓存到合适的文件夹中


三、沙盒文件的查看方法

在MAC操作系统中,ios模拟器所产生的沙盒区域在系统的Library(资源库)文件夹中,通常系统将Library文件夹设置为 隐藏文件
我们需要通常IOS终端显示隐藏文件:
[localhost ~]#defaults write.com.apple.finder AppleShowAllFiles -bool true —(授权finder)打开隐藏文件
[localhost ~]#defaults write.com.apple.finder AppleShowAllFiles -bool false —(关闭finder)查看隐藏文件
输入完命令,重新打开finder就可以看见,finder中可以看见资源库文件夹了
/User/maomao365.com/Library/Developer/CoreSimulator/Devices/*******


四、模拟器中数据库路径查看

    
    NSString *mainPath = NSHomeDirectory();//应用程序主目录
    NSLog(@"应用程序主目录:%@",mainPath);
    NSString *userInfo = NSUserName();//当前系统用户
    NSLog(@"系统用户:%@",userInfo);
    NSString *userInfoMainPath = NSHomeDirectoryForUser(userInfo);
    NSLog(@"应用程序主目录:%@",userInfoMainPath);
    NSArray *appMainPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *appDocumentPath=[appMainPath objectAtIndex:0];//Documents目录
    NSLog(@"应用程序中documents路径:%@",appDocumentPath);