Preference偏好设置

2016-02-18  本文已影响227人  Hi唐吉诃德

简介

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
注意
上一篇 下一篇

猜你喜欢

热点阅读