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不会备份此目录,此目录下文件不会在应用退出删除