NSSearchPathForDirectoriesInDomains

1.iPhone会为每一个应用程序生成一个私有目录,这个目录位于:

/Users/***/Library/Developer/CoreSimulator/Devices/79D02154-BE58-4A15-A764-79619AFB92E1/data/Containers/Data/Applications下,

并随即生成一个数字字母串作为目录名,在每一次应用程序启动时,这个字母数字串都是不同于上一次。

所以通常使用Documents目录进行数据持久化的保存,而这个Documents目录可以通过:

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserdomainMask,YES) 得到。

代码如下:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSLog(@"path:   %@",path);

  NSString* path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSLog(@"path%@",path);

    打印结果如下:

    path:   

/Users/***/Library/Developer/CoreSimulator/Devices/79D02154-BE58-4A15-A764-79619AFB92E1/data/Containers/Data/Application/7314AA0F-EDBD-4719-8294-A9CFC23C7AE5/Documents

而通过 NSHomeDirectory()也可以得到程序的目录,代码如下:

    NSString *destPath = NSHomeDirectory();

    NSLog(@"path:   %@",destPath);

    打印结果如下:

    path:  

/Users/beyondtel/Library/Developer/CoreSimulator/Devices/79D02154-BE58-4A15-A764-79619AFB92E1/data/Containers/Data/Application/7314AA0F-EDBD-4719-8294-A9CFC23C7AE5

    看看两者打印出来的结果,我们可以看出这两种方法的不同

 

在Documents目录下创建文件

代码如下:

    NSString* path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString* dbPath=[path stringByAppendingPathComponent:@"user.db"];

  • Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录
  • tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
  • Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
posted @ 2015-03-18 16:15  浅忆0  阅读(346)  评论(0编辑  收藏  举报