美文网首页
Preference偏好设置

Preference偏好设置

作者: Hi唐吉诃德 | 来源:发表于2016-02-18 12:06 被阅读227次

    简介

    Preference主要用到NSUserDefaults, NSUserDefaults是一个单例,提供了一个默认的系统编程接口进行交互,一般用来存储应用程序相关的偏好设置,配置数据等,以便于下次启动程序之后能恢复上次的设置。
    而且它可以在程序的任何地方存储和读取数据。在运行时,可以使用NSUerDefaults对象读取应用程序的默认数据库来获取数据。
    NSUerDefaults具有缓存机制,所以不必再每次读取数据的时候都打开应用程序的默认设置数据库。可以通过synchronize方法来使内存中的缓存与系统默认数据库进行同步。

    可存储的数据类型

    NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.

    数据的存储操作

    //1.获得NSUserDefaults文件 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; //2.向文件中写入内容 [userDefaults setObject:@"AAA" forKey:@"a"]; [userDefaults setBool:YES forKey:@"sex"]; [userDefaults setInteger:21 forKey:@"age"]; //2.1立即同步 [userDefaults synchronize]; //3.读取文件 NSString *name = [userDefaults objectForKey:@"a"]; BOOL sex = [userDefaults boolForKey:@"sex"]; NSInteger age = [userDefaults integerForKey:@"age"]; NSLog(@"%@, %d, %ld", name, sex, age);

    存储自定义对象类型

    NSUserDefaults 本身不支持自定义对象的存储, 但是NSUserDefaults可以存储NSData类型,所以在存储自定义类型时,转换成NSData类型来存储。

    第一步:自定义对象遵守<NSCoding>协议,并实现
    - (void)encodeWithCoder:(NSCoder *)aCoder;
    - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;
    第二步: 存储、读取

    Student *zhang = [[Student alloc]init];
    zhang.name = @"ZhangSan";
    zhang.age = @"18";
    //存储
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:zhang];
    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
    [user setObject:data forKey:@"student"];
    [user synchronize];
    //读取
    NSData *data1 = [user objectForKey:@"student"];
    Student *student = [NSKeyedUnarchiver unarchiveObjectWithData:data1];
    NSLog(@"%@",student.name);   //输出zhangsan
    
    注意
    • 对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性
    • NSUserDefaults存储的对象全是不可变的. 例如,如果我想要存储一个 NSMutableArray 对象,我必须先创建一个不可变数组NSArray再将它存入NSUserDefaults中去
    • 偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。
    • 如果没有调用synchronize方法,系统会根据I/O情况不定时刻地保存到文件中。所以如果需要立即写入文件的就必须调用synchronize方法。
    • 偏好设置会将所有数据保存到同一个文件中。即preference目录下的一个以此应用包名来命名的plist文件。

    相关文章

      网友评论

          本文标题:Preference偏好设置

          本文链接:https://www.haomeiwen.com/subject/txmmkttx.html