关于NSUserDefaults
来源:互联网 发布:软件下载bestic 编辑:程序博客网 时间:2024/05/19 09:10
NSUserDefaults是一个单例,在整个程序中只有一个实例对象,可以用于数据的永久保存。
他的作用一般是用来保存和恢复应用程序相关的偏好设置,配置数据等等。默认系统允许应用程序自定义它的行为去迎合用户的喜好。你可以在程序运行的时候从用户默认的数据库中读取程序的设置。同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作。可以通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步。
NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.
如果想要将上述数据类型的数据永久保存到NSUserDefaults中去,只需要简单的操作(一个Value 一个Key ),例如,eg想要保存一个NSString的对象:
<span style="font-size:18px;">//将NSString 对象存储到 NSUserDefaults 中 NSString *passWord = @"1234567"; NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; [user setObject:passWord forKey:@"userPassWord"];</span>
<span style="font-size:18px;">//取数据 NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; NSString *passWord = [ user objectForKey:@"userPassWord"];</span>
建立一个随意类,比如person类,给予他几个属性,代码如下:
person.name = @"AlenChen";person.age = 15;person.weight = 75.5f;
我们要做的就是将person类型变成NSData类型 ,那么就必须实现归档:
需要 在person.h 文件中申明 NSCoding 协议,再 在 .m 中实现 encodeWithCoder 方法 和
initWithCoder 方法,代码如下:
- (void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.name forKey:@"key"]; ....}
- (instancetype)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { self.name = [aDecoder decodeObjectForKey:@"name"]; ... } return self;}
这样做就可以将自定义类型转变为NSData类型了
如果你只想存一个人的信息,你可以直接将NSData存入NSUserDefaults中 :
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:person]; NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; [user setObject:data forKey:@"person"];
如果要多个对象的信息,我们可以建一个NSMutableArray 来存放多人信息(里面存储的全是NSData对象)在需要存储的地方加入代码:
//数组 NSMutableArray * dataArray = [NSMutableArray arrayWithCapacity:50]; //将person类型变为NSData类型 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:person]; //存放数据的数组将data加入进去 [dataArray addObject:data]; NSArray * array = [NSArray arrayWithArray:dataArray]; NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; [user setObject:array forKey:@"all person"];
NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; NSdData *data = [user objectForKey:@"person"]; person *person = [NSKeyedUnarchiver unarchiveObjectWithData:data];
- 关于NSUserDefaults
- 关于NSUserDefaults
- 关于NSUserDefaults
- 关于 NSUserDefaults 报错
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- makefile 学习笔记1
- leetcode——130——Surrounded Regions
- C# 访问控制符 0006
- Struts2——debug标签
- 【SSO单点登录实现原理与总结】
- 关于NSUserDefaults
- 在脚本中 使用数组 获取列表中选中的复选框id + 获取选中的单选框的值
- window.open全屏设置的方法
- node入门解读(grunt,npm)
- EDIUS中的GPU转场该怎么设置
- php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
- android studio build cpu 99%运行问题
- C#基础知识之函数重载OverLoad
- jqgrid学习(二)