本地存储 之 NSUserDefaults 及NSUserDefaults对存储对象的封装
来源:互联网 发布:秉钧网络 编辑:程序博客网 时间:2024/05/22 08:14
作为iOS小菜鸟的处秀就留在此处了,如果大神不小心路过,请多多指教,或者转身走开,请忽略一个小菜鸟的抒发,不废话开始装B的处女秀
NSUserDefaults主要进行本地存储,它存储在沙盒下的library/preferences文件夹内以xxx.plist文件存在,的对象必须是属性表,所以它只能存储的类型有NSdata,Nsstring,NSdate,Nsdictionary,NSArray,并且存储的数据量较小,一般存储小型数据,如果你想存储其他类型的对象,你要将其归档并创建一个NSData来实现存储。NSUserDefaults是单例,同时也是线程安全的。
先拿非类型举个列子:
数据存储:
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
NSString *name =@”default string“;
[defaults setObject:firstName forKey:@"name"];
NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:
[defaults synchronize];
数据存储过后,这时有点全局变量的意思了,在工程中你想在哪里想用就在哪里取就好了。
取数据:
NSString *name = [defaults objectForKey:@"name"];
要是存储类则需要归档并创建一个NSData来实现存储
对象的存储:
NSData *udObject = [NSKeyedArchiverarchivedDataWithRootObject:entity];
NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];
[userDefaultsetObject:udObjectforKey:key];
[[NSUserDefaultsstandardUserDefaults]synchronize];
取对象:
NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];
entity = [userDefault objectForKey:key];
如果工程大量用到NSUserDefaults来存储对象,可以建一个工具类来方便对象的存储和取,又来一个列子:
UserStandardTool.h文件
@interface UserStandardTool :NSObject
/**
* 保存
*
* @param value 值
* @param defaultName key
*/
+ (void)savaObjectForKey:(id)value key:(NSString *)key;
/**
* 根据key获取
*
* @param defaultName key
*
* @return值
*/
+ (id)getObjForKey:(NSString *)key;
+ (id)getEntityForKey:(NSString *)key;
/**
* 根据key清除
*
* @param defaultName key
*/
+ (void)clearForKey:(NSString *)key;
/**
* 保存一个实体类
*
* @param entity 实体
* @param defaultName key
*/
+ (void)savaEntityForKey:(id)entity key:(NSString *)key;
UserStandardTool.m文件
+ (void)savaEntityForKey:(id)entity key:(NSString *)key {
[selfclearForKey:key];
NSData *udObject = [NSKeyedArchiverarchivedDataWithRootObject:entity];
[selfsavaObjectForKey:udObjectkey:key];
}
+ (void)savaObjectForKey:(id)value key:(NSString *)key {
[selfclearForKey:key];
NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];
// NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:entity];
[userDefaultsetObject:valueforKey:key];
//UserDefaults不是立即写入,而是根据时间戳定时的把缓存中的数据写入本地磁盘。
//通过调用synchornize方法强制写入。
[[NSUserDefaultsstandardUserDefaults]synchronize];
}
+ (void)clearForKey:(NSString *)key {
NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];
[userDefaultremoveObjectForKey:key];
[[NSUserDefaultsstandardUserDefaults]synchronize];
}
+ (id)getObjForKey:(NSString *)key {
NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];
return [userDefaultobjectForKey:key];
}
+ (id)getEntityForKey:(NSString *)key {
NSData *data = [UserStandardToolgetObjForKey:key];
return [NSKeyedUnarchiverunarchiveObjectWithData:data];
}
- 本地存储 之 NSUserDefaults 及NSUserDefaults对存储对象的封装
- IOS 本地存储NSUserDefaults封装
- ios 本地存储之NSUserDefaults
- NSUserDefaults 存储类型 及存储对象
- NSUserDefaults 存储类型 及存储对象
- iOS 本地存储NSUserDefaults
- NSUserDefaults用户信息存储本地
- iOS NSUserDefaults本地存储
- NSUserDefaults本地存储 + MD5
- NSUserDefaults 数据存储及自定义对象的存储
- NSUserDefaults 存储自定义对象
- NSUserDefaults 存储自定义对象
- NSUserDefaults 存储自定义对象
- iOS 本地轻量级数据存储之NSUserDefaults
- 本地存储数据之NSUserDefaults standardUserDefaults的使用
- Swift简单的本地存储方式NSUserDefaults
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
- 二分法的常见应用
- 二叉树的三种遍历
- android客户端学习 - 常用布局样式及布局优化include , merge,viewStub
- 快速简单理解i2c标准协议
- Chrome扩展开发学习笔记之扩展基础
- 本地存储 之 NSUserDefaults 及NSUserDefaults对存储对象的封装
- Nexpose 注册和安装攻略
- Mysql函数INSTR、LOCATE、POSITION VS LIKE
- 打字速度第一次测速--很烂呐
- iOS9中的网络问题
- 正则表达式
- jdk, scala, maven, gradle, ant install shell bash, and Dockerfile for Ubuntu:14:04
- 如何让应用程序在计算机开机后延迟启动?
- android倒计时功能的实现(CountDownTimer)