iOS: 偏好设置的详解和使用
偏好设置的详解:
用途:主要用来存储用户系统的设备信息,但有的时候也可以在程序的任何地方用来存储数据,作为全局数据来访问,例如视图切换需要进行登录时。
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