NSUserDefaults 保存自己定义对象
项目里json返回的一个model须要保存下来,这个model是固定的没必须去创建表,想到了NSUserDefaults来存储,暂不考虑安全问题。
NSUserDefaults没法直接存储一个对象。在网上找到了方法。如今分享下。
首先要写一个对象,详细代码例如以下:
.h文件
@interface CustomSerModel : NSObject
@property(nonatomic,retain)NSString *m_deptId;//部门编号
@property(nonatomic,retain)NSString *m_sort_key;//姓名首字母,用于分组排序
@property(nonatomic,retain)NSString *m_imgUrl;//头像地址
@property(nonatomic,retain)NSString *m_imgKey;//头像文件的key
@property(nonatomic,retain)NSString *m_signature;//个性签名
@property(nonatomic,retain)NSString *m_name;//好友姓名
@property(nonatomic,retain)NSString *m_entUserId;//好友企业用户编号
@property(nonatomic,retain)NSString *m_entId;//好友企业编号
@property(nonatomic,retain)NSString *m_address;//地址
@property(nonatomic,retain)NSString *m_mobilePh;//手机号码
@property(nonatomic,retain)NSString *m_sex;//性别
@property(nonatomic,retain)NSString *m_shortPh;//集团短号
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
+(BOOL) ParserJson:(NSString*)json withArray:(NSMutableArray *)array;
@end
.m文件
@implementation CustomSerModel
@synthesize m_deptId,m_sort_key,m_imgUrl,m_imgKey,m_signature,m_name,m_entUserId,m_entId,m_address,m_mobilePh,m_sex,m_shortPh;
-(void)dealloc
{
[m_deptId release];
[m_sort_key release];
[m_imgUrl release];
[m_imgKey release];
[m_signature release];
[m_name release];
[m_entUserId release];
[m_entId release];
[m_address release];
[m_mobilePh release];
[m_sex release];
[m_shortPh release];
[super dealloc];
}
- (void) encodeWithCoder: (NSCoder *)coder
{
[coder encodeObject:self.m_deptId forKey:@"DeptId"];
[coder encodeObject:self.m_sort_key forKey:@"ImgKey"];
[coder encodeObject:self.m_imgUrl forKey:@"ImgUrl"];
[coder encodeObject:self.m_signature forKey:@"Signature"];
[coder encodeObject:self.m_name forKey:@"Name"];
[coder encodeObject:self.m_entId forKey:@"EntId"];
[coder encodeObject:self.m_entUserId forKey:@"EntUserId"];
[coder encodeObject:self.m_address forKey:@"Address"];
[coder encodeObject:self.m_mobilePh forKey:@"MobilePh"];
[coder encodeObject:self.m_sex forKey:@"Sex"];
[coder encodeObject:self.m_shortPh forKey:@"ShortPh"];
} - (id) initWithCoder: (NSCoder *) coder
{
m_deptId = [[coder decodeObjectForKey:@"DeptId"]copy];
m_imgKey = [[coder decodeObjectForKey:@"ImgKey"]copy];
m_imgUrl = [[coder decodeObjectForKey:@"ImgUrl"]copy];
m_signature = [[coder decodeObjectForKey:@"Signature"]copy];
m_name = [[coder decodeObjectForKey:@"Name"]copy];
m_entId = [[coder decodeObjectForKey:@"EntId"]copy];
m_entUserId = [[coder decodeObjectForKey:@"EntUserId"]copy];
m_address = [[coder decodeObjectForKey:@"Address"]copy];
m_mobilePh = [[coder decodeObjectForKey:@"MobilePh"]copy];
m_sex = [[coder decodeObjectForKey:@"Sex"]copy];
m_shortPh = [[coder decodeObjectForKey:@"ShortPh"]copy]; return self;
}
+(BOOL) ParserJson:(NSString*)json withArray:(NSMutableArray *)array
{
//此处省略
return TRUE;
} @end
定义好对象后如今就是怎么使用了,保存方法:
NSMutableArray *arr = [[NSMutableArray alloc]init];
[CustomSerModel ParserJson:json withArray:arr];
NSData *encodemenulist = [NSKeyedArchiver archivedDataWithRootObject:arr];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodemenulist forKey:@"CustomList"];
获取方法:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *saveMenulistDaate = [defaults objectForKey:@"CustomList"];
NSMutableArray *arr = (NSMutableArray *)[NSKeyedUnarchiver unarchiveObjectWithData:saveMenulistDaate];
完毕,感谢汗清提供的帮忙。
參考:http://zani.iteye.com/blog/1431239
http://blog.csdn.net/jianjianyuer/article/details/10112759
http://blog.sina.com.cn/s/blog_61e26bcb010115cm.html
NSUserDefaults 保存自己定义对象的更多相关文章
- iOS自己定义对象保存到本地文件
我是将聊天记录存到本地,里边用到了自己定义的对象.把数据转成Data格式存到本地.在转Data格式的时候报错了.这时候须要先将自己定义对象进行归档才干够转Data格式. 方法例如以下: 一.在.h文件 ...
- NSUserDefaults保存用户名和密码
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...
- js--自定义对象
1.直接量对象(JSON) {"name":"zhangsan","age":25} {}代表一个对象,包含多组键值对. 通常key是字符串 ...
- js定义对象的几种容易犯的错误
//js定义对象的几种容易犯的错误function Person() { getName = function (){ console.info(1); }; return this;}//Perso ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- javascript 构造函数方式定义对象
javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> <script type="tex ...
- javaScript定义对象的方法
转自souhu新闻http://news.sohu.com/20110215/n279335637.shtml? javascript定义对象的几种简单方法 1.构造函数方式,全部属性及对象的方法都放 ...
- JS笔记2 --定义对象
16.javascript中定义对象的几种方式(javascript中没有类的概念,只有对象): 1)基于已有对象扩充其属性和方法: var object = new Object(); object ...
- switch case语句里面不能定义对象,有语法错误,除非加一个花括号
最近发现一个问题呢 发现在switch的case里面不能去定义对象了,一定义对象就会报错了 仔细了解了一下在C或者C++中,只要是在任何一对花括号 “{ }”中定义的对象,那么该对象的作用域就局限在这 ...
随机推荐
- c++类的单目和双目运算符的重定义
这个里面需要注意的是对于双目运算符,像是加号,如果是复数加整数是一种情况,而整数加复数又是另一种情况,所以需要重定义两次. 而对于单目运算符,如果是前缀的,直接重定义就可以了,但是如果是后缀的,我们在 ...
- Python 2 和 Python 3 主要区别有哪些(1)
Guido(Python之父,仁慈的独裁者)在设计 Python3 的过程中,受一篇文章 “Python warts” 的影响,决定不向后兼容,否则无法修复大多数缺陷.---摘录自<流畅的Pyt ...
- You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, i
[ERROR] Unknown lifecycle phase "mvn". You must specify a valid lifecycle phase or a goal ...
- Spring入门(1)——搭建简单的环境
步骤: 1.下载spring框架开发包. 2.创建web项目并引入开发包. 3.创建java接口和相应的实现类. 4.编写spring的配置文件. 5.编写 测试类,并进行测试. 1.下载spring ...
- [MVC][Shopping]Copy Will's Code
数据模型规划(Models) //DisplayNameAttribute 指定属性的显示名称 [DisplayName("商品类别")] //DisplayColumnAttri ...
- SQLServer__问题记录
“备份集中的数据库备份与现有的xx数据库不同” 参考链接: http://www.cnblogs.com/huangfr/archive/2012/08/09/2629687.html RESTOR ...
- Python接口测试之moco
在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证 在客户端开发的时候,api在server端已经开发完成,专门等着前端来调用,理想的情况 ...
- php对象(继承,多态)
/2.继承//function abc(){// $arr = func_get_args();//}//子类只能有一个父类 一个父类 可以有多个子类//override 重写//overlood 重 ...
- poj 3683 2-sat问题,输出任意一组可行解
/* 2sat问题 输出任意一组可行解 */ #include<stdio.h> #include<string.h> #include<stdlib.h> #in ...
- ISAPI映射路径错误,导致K3Cloud打不开。
今天一个同事说她的K3Cloud打不开,一看是页面报500错误,具体信息看图片: 问题: ISAPI配置的映射路径错了,多了个反斜线. 解决办法: 在IIS管理器中找到ISAPI筛选器,删除掉就行了.