NSUserDefault
来源:互联网 发布:为知笔记 知乎 编辑:程序博客网 时间:2024/04/27 19:19
</pre><pre name="code" class="objc"><pre name="code" class="objc">// NSUserDefaults类提供了一个与默认系统进行交互的编程接口,// NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等。// 默认系统允许应用程序自定义它的行为去迎合用户的喜好,// 可以在程序运行的时候从用户默认的数据库中读取程序的设置,比如主题偏好设置等// 同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作,可以通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步。// 一个NSUserDefaults类的对象必须是属性表//我们可以存储NSData NSString NSNumber NSDate NSArray NSDictionary 这些实例// 如果我们想存储其他类型的对象,需要归档并创建一个NSData来实现存储。 // 1. 存储 /* NSString *password = @"helloworld"; [[NSUserDefaults standardUserDefaults] setObject:password forKey:@"password"]; [[NSUserDefaults standardUserDefaults] synchronize]; */ // 2. 获取// NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];// NSLog(@"password : %@",password);// 2015-08-26 13:32:35.027 NSUserDefault[7986:303] password : helloworld // ----// 从上面的例子得到了结论,只需要将需要存储的数据给NSUserDefaults 然后调用同步方法,再次启动程序,就可以获取NSUserDefaults的数据。 // 使用 NSUserDefaults 存储自定义对象 // Student ,我们需要将Student类型变为NSData类型 就必须实现归档 自定义对象实现归档必须遵循NSCoding协议。 // Student *student = [[Student alloc] init];// student.name = @"Charles";// student.studentNumber = @"12110501007";// student.sex = @"man";// // 归档方法//// + (NSData *)archivedDataWithRootObject:(id)rootObject;// // 1. 存储// /*// NSData *data = [NSKeyedArchiver archivedDataWithRootObject:student];// [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"studentData"];// [[NSUserDefaults standardUserDefaults] synchronize];// */ // 解档方法// + (id)unarchiveObjectWithData:(NSData *)data;// // 2. 获取// id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"studentData"];// // 我们打印一下这时候获取的真实类型是什么?// NSLog(@"obj : %@",NSStringFromClass([obj class]));//// obj : __NSCFData//// 我们需要解归档。 将NSData数据转化为 student对象// Student *getStudent = [NSKeyedUnarchiver unarchiveObjectWithData:obj];// NSLog(@"getStudent : %@",getStudent);//// getStudent : name :Charles studentNumber :12110501007 sex :man // 归档解档 NSArray *array = @[@"1",@"2"]; NSMutableData *mulData = [NSMutableData data]; NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mulData]; [keyedArchiver encodeObject:array forKey:@"array"]; [keyedArchiver finishEncoding]; [mulData writeToFile:@"/Users/ms/Desktop/FileManager/file.txt" atomically:YES];// /Users/ms/Desktop/FileManager/file.txt
@interface Student () <NSCoding>@end@implementation Student- (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeObject:self.studentNumber forKey:@"studentNumber"]; [aCoder encodeObject:self.sex forKey:@"sex"];}- (id)initWithCoder:(NSCoder *)aDecoder { if (self = [super init]) { self.name = [aDecoder decodeObjectForKey:@"name"]; self.studentNumber = [aDecoder decodeObjectForKey:@"studentNumber"]; self.sex = [aDecoder decodeObjectForKey:@"sex"]; } return self;}- (NSString *)description{ return [NSString stringWithFormat:@"name :%@ studentNumber :%@ sex :%@", _name,_studentNumber,_sex];}
0 0
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault
- NSUserDefault使用方法
- NSUserDefault(沙盒)
- 采用全局变量NSUserDefault
- IOS NSUserDefault的使用
- property list 和 nsuserdefault
- ios nsuserdefault使用
- 采用全局变量NSUserDefault
- NSUserdefault 存储自定义对象
- ubuntu源码安装ctags
- 如何使用友盟崩溃分析
- 处理语法高亮的一些问题
- SDN控制平面发展历史及趋势
- 关于使用matplotlib-legend方法失效问题
- NSUserDefault
- Android ListView异步加载图片乱序问题,原因分析及解决方案
- C++ sqlite中文插入,模糊读取
- Spring MVC入门案例(2)
- HDU 1698 Just a Hook
- 组合二叉树[二叉查找树+大根堆]
- 我的openwrt学习笔记(二十二):网络时间同步
- Android中解决网络连接异常
- Android性能优化典范(二)