IOS沙盒

一:沙盒的目录结构

•默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件:
•(1)Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
•(2)Library:存储程序的默认设置或其它状态信息;
•Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
•Library/Preferences:存储应用偏好设置(NSUserDefaults存储位置)
•(3)tmp:提供一个即时创建临时文件的地方。
 
二:获取Documents子文件夹的方式
•目录获取方式:
•NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
•NSString *documentsDirectory=[paths objectAtIndex:0];
三:NSUserDefaults
•NSUserDefaults适合存储轻量级的本地数据,一些简单的数据如用户名,密码,是否登录,是否第一次打开应用等;
•NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.,仅限于系统类型;
•用户自定义类型对象是不能使用NSUserDefaults存储
•NSUserDefaults是一个单例,在整个程序中只有一个实例对象;
•NSUserDefaults保存的数据在沙盒的“Library/Preferences”中;
 
1:NSUserDefaults保存数据方法
•NSUserDefaults是基于键值操作的;
•保存密码的代码如下:
•//将NSString 对象存储到 NSUserDefaults 中
•    NSString *passWord = @"1234567";
•    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
•    [user setObject:passWord forKey:@"userPassWord"];
 
相关代码

- (void)viewDidLoad {

    [super viewDidLoad];

    

    NSString *password = @"12412341";

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    [user setObject:password forKey:@"userPassword"];

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

    

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSLog(@"%@",documentsDirectory);

}

2,NSUserDefaults读数据方法
•将数据取出也很简单,只需要取出key 对应的值就好了,代码如下:
•NSUserDefaults *user=[NSUserDefaults standardUserDefaults];
•NSString *passWord = [ user objectForKey:@“userPassWord"];
•注意:
•对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性
•将数据取出也很简单,只需要取出key 对应的值就好了,代码如下:
•NSUserDefaults *user=[NSUserDefaults standardUserDefaults];
•NSString *passWord = [ user objectForKey:@“userPassWord"];
•注意:
•对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性
 
代码

- (void)viewDidLoad {

    [super viewDidLoad];

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    NSString *password = [user objectForKey:@"userPassword"];

    NSLog(@"%@",password);

    

}

posted @ 2015-08-24 14:48  IT菜鸟来袭  阅读(174)  评论(0编辑  收藏  举报