iOS: 偏好设置的详解和使用

偏好设置的详解:

用途:主要用来存储用户系统的设备信息,但有的时候也可以在程序的任何地方用来存储数据,作为全局数据来访问,例如视图切换需要进行登录时。

偏好设置的写入:
•很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能
•每个应用都有个NSUserDefaults实例,它是一个单例对象,通过它来存取偏好设置,设置信息都是键值对的形式。
•例如:保存用户名、字体大小、是否自动登录

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setObject:@"itcast.cn" forKey:@"userName"];

[defaults setFloat:18.0f forKey:@"fontSize"];

[defaults setBool:YES forKey:@"autoLogin"];

偏好设置的读取:

// 读取系统偏好

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *userName = [defaults objectForKey:@"userName"];

float fontSize = [defaults floatForKey:@"fontSize"];

BOOL autoLogin = [defaults boolForKey:@"autoLogin"];

注意:UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘,应用程序就终止了。

出现以上问题,可以通过调用synchornize同步方法强制写入:

[defaults synchronize];

 

偏好设置的使用:

1.设置用户登录信息(偏好设置)

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 

    [userDefaults setObject:@"admin" forKey:@"userName"];     //登录用户名

    [userDefaults setObject:[NSDate date] forKey:@"loginDate"];      //登录时间

    [userDefaults setInteger:2 forKey:@"times"];              //登录次数

 

2.将设置的用户信息强制保存到磁盘沙盒目录下的preference文件中

    [userDefaults synchronize];

 

3.读取偏好设置

  NSUserDefaults *userDefaluts = [NSUserDefaults standardUserDefaults];    

    NSString *userName = [userDefaluts objectForKey:@"userName"];

    NSDate *date = [userDefaluts objectForKey:@"loginDate"];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];

    dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

    NSInteger times = [userDefaluts integerForKey:@"times"];

    NSLog(@"userName:%@,date:%@,times:%ld",userName,[dateFormatter stringFromDate:date],times);

 

演示结果:

2015-09-20 10:18:33.529 02-用户偏好设置[601:20685] userName:admin,date:2015-09-20 10:18:33,times:2

 

posted @ 2015-09-20 10:19  XYQ全哥  阅读(4051)  评论(0编辑  收藏  举报