一.简单说明

偏好设置的存储一般是为了保存一些比较常规的设置,比如用户名,字体大小,是否自动登录等信息.存储的位置在沙盒的 Library(Preferences) 文件夹中.


二.注意点

1.偏好设置是专门用来保存应用程序的配置信息的,一般情况不要在偏好设置中保存其他数据.如果利用系统的偏好设置来存储数据,默认就是存储在 Preferences文件夹中的,偏好设置会将所有的数据都保存到同一个文件夹中.

2.使用偏好设置对数据进行保存之后,它保存到系统的时间是不确定的,会在将来的某一时间点自动将数据保存到 Preferences 文件夹下面,如果需要即刻将数据存储,可以使用[defaults synchronize];

3.注意点:所有的信息都写在一个文件中,对比简单的 plist 可以保存和读取基本的数据类型.

4.步骤: 获取 NSUserDefaults,保存(读取)数据


三.代理示例:


存数据

IBAction)save:(id)sender
 {
    // 偏好设置
    // 1.不需要关心文件名和路径(默认的就是bundleid.plist)
    // 2.快速的做键值对存储
    //1.获取NSUserDefaults对象
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
     
    //2保存数据(如果设置数据之后没有同步, 会在将来某一时间点自动将数据保存到Preferences文件夹下面)
setObject:@"value" forKey:@"key"];
setInteger:23 forKey:@"age"];
setDouble:1.73f forKey:@"height"];
setBool:YES forKey:@"isOn"];
     
    //3.强制让数据立刻保存
synchronize];
 }
 
取数据
IBAction)read:(id)sender
 {
    //1.获取NSUserDefaults对象
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    //读取保存的数据
NSString *value = [defaults  objectForKey:@"key"];
NSInteger age = [defaults  integerForKey:@"age"];
double height = [defaults  doubleForKey:@"height"];
     
    NSLog(@"value=%@, age=%ld, height= %.1f",value, age, height);
NSLog(@"bool = %d", [defaults boolForKey:@"isOn"]);
 }