1.NSSearchPathForDirectories:InDomains:方法需要解释下,其声明如下:
FOUNDATION_EXPORT NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);
该方法用于返回指定范围内的指定名称的目录的路径集合。有三个参数:directoryNSSearchPathDirectory类型的enum值,表明我们要搜索的目录名称,比如这里用NSDocumentDirectory表明我们要搜索的是Documents目录。如果我们将其换成NSCachesDirectory就表示我们搜索的是Library/Caches目录。domainMaskNSSearchPathDomainMask类型的enum值,指定搜索范围,这里的NSUserDomainMask表示搜索的范围限制于当前应用的沙盒目录。还可以写成NSLocalDomainMask(表示/Library)、NSNetworkDomainMask(表示/Network)等。expandTildeBOOL值,表示是否展开波浪线~。我们知道在iOS中~的全写形式是/User/userName,该值为YES即表示写成全写形式,为NO就表示直接写成“~”。
NSSearchPathDomainMask NSUserDomainMask是指/user//目录,NSLocalDomainMask,官方文档说是Local to the current machine—the place to install items available to everyone on this machine.还是不太好理解,应该就是跟NSUserDomainMask相对的一个概念,NSUserDomainMask是针对当前用户的,而NSLocalDomainMask是针对所有用户的,比如Library目录,如果是针对用户的,就是/user//Library,而对所有用户的就是/Library。
NSNetworkDomainMaskt是指/Network目录下的文件夹。
NSSystemDomainMask是系统目录,现在的Mac在/System目录下只有一个Library目录,这个目录下包含了系统运行的程序和文件。并且所有的SystemDomain的文件夹都是只读的。
其实这个enum定义的是domain的概念,不能简单的理解为某个文件夹下的文件,比如NSSystemDomainMask中的Application目录是/Applications,Document目录是/System/Library/Documentation,其实这就没什么意义,因为这个文件夹根本不存在。
2.Myapp.app [[NSBundle mainBundle] bundlePath]
3.NSTemporaryDirectory() // ~/tmp/
4.NSHomeDirectory() //doucement根目录(其下包含document、library、tmp)
5.[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]; //同上
注意2和4、5的区别:分别输出一下,自行比对
2:/Users/jiuxiaoming/Library/Developer/CoreSimulator/Devices/D046A800-26C8-4ACB-8884-BFF0AB19FD37/data/Containers/Bundle/Application/80DD0709-A2D0-47F2-8E47-978806C3C110/Day1CoreData.app
5:/Users/jiuxiaoming/Library/Developer/CoreSimulator/Devices/D046A800-26C8-4ACB-8884-BFF0AB19FD37/data/Containers/Data/Application/6AAAB6A9-35C2-4FE4-8BE8-1DB38ADE8662/Documents






网友评论