iOS保存model数据(自定义Model 可以存放到本地)

1.先创建类目类:继承于NSUserDefaults

2其次前提:保存的model要实现NSCoding

3.在自定义的类目实现这两个方法

-(void)setCustomObj:(id)obj forKey:(NSString *)key;

-(id)customObjForKey:(NSString *)key;

在自定义的类目中实现这两个方法

-(void)setCustomObj:(id)obj forKey:(NSString *)key

{

if ([obj respondsToSelector:@selector(encodeWithCoder:)] == NO) {

NSLog(@"对象存入失败!对象必须实现NSCoding 协议的 encodeWithCoder:方法");

return;

}

NSData * encodeObject = [NSKeyedArchiver archivedDataWithRootObject:obj];

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

[defaults setObject:encodeObject forKey:key];

[defaults synchronize];

}

-(id)customObjForKey:(NSString *)key

{

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

NSData * encodeObject = [defaults objectForKey:key];

if (encodeObject == nil) {

return nil;

}

id obj = [NSKeyedUnarchiver unarchiveObjectWithData:encodeObject];

return obj;

}

4.再次来到我们保存model中实现NSCoding协议

- (id)initWithCoder:(NSCoder *)decoder

{

self = [super initWithCoder:decoder];

if (self) {

self.cityId = [decoder decodeObjectForKey:@"cityId"];

self.cityName = [decoder decodeObjectForKey:@"cityName"];

self.cityLat = [decoder decodeObjectForKey:@"cityLat"];

self.cityLng = [decoder decodeObjectForKey:@"cityLng"];

self.firstCharacter = [decoder decodeObjectForKey:@"firstCharacter"];

self.subsidiaryBankId = [decoder decodeObjectForKey:@"subsidiaryBankId"];

}

return self;

}

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.cityId forKey:@"cityId"];

[aCoder encodeObject:self.cityName forKey:@"cityName"];

[aCoder encodeObject:self.cityLat forKey:@"cityLat"];

[aCoder encodeObject:self.cityLng forKey:@"cityLng"];

[aCoder encodeObject:self.firstCharacter forKey:@"firstCharacter"];

[aCoder encodeObject:self.subsidiaryBankId forKey:@"subsidiaryBankId"];

}

5.最后来到控制器中,实例化类目,就可以实现保存model

时间: 2024-11-07 21:06:41

iOS保存model数据(自定义Model 可以存放到本地)的相关文章

iOS JSONModel解析数据成Model

转发自 http://blog.csdn.net/smking/article/details/40432287 JSONModel, Mantle 这两个开源库都是用来进行封装JSON->Model的, 想想看, 直接向服务器发起一个请求,然后回来后,就是一个Model, 直接使用, 这是一个多么美好的事情. 感谢GitHub的开源精神. 那我们开始吧. 先说说这两个的差别. 这两个使用的方法其实都差不多, 详细的使用方法请直接GitHub上找, 还是比较简单地. 就我个人来说JSONMode

iOS开发JSON文件解析数据成Model的过程简单介绍

本文内容来源:http://blog.csdn.net/smking/article/details/40432287 JSONModel, Mantle 这两个开源库都是用来进行封装JSON->Model的, 想想看, 直接向服务器发起一个请求,然后回来后,就是一个Model, 直接使用, 这是一个多么美好的事情. 先说说这两个的差别. 这两个使用的方法其实都差不多, 详细的使用方法请直接GitHub上找, 还是比较简单地. 就我个人来说JSONModel相对起来使用较为简单,而Mantle使

iOS去除数组中重复的model数据

// 去除数组中model重复 for (NSInteger i = 0; i < self.selectedModelArray.count; i++) { for (NSInteger j = i+1;j < self.selectedModelArray.count; j++) { AssistantModel *tempModel = self.selectedModelArray[i]; AssistantModel *model = self.selectedModelArray[

iOS自定义model排序

在开发过程中,可能需要按照model的某种属性排序. 1.自定义model @interface Person : NSObject @property (nonatomic,copy) NSString *name; @property (nonatomic,assign) int age; @end 2.创建model对象 //创建model Person *liming = [[Person alloc] init]; liming.name = @"liming"; limin

Django Model数据访问Making queries

创建完Model之后, Django 自动为你提供一套数据库抽象层的API,利用它可以完成创建,提取,更新,删除对象的操作. 以下面的Model为例: class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() # On Python 3: def __str__(self): def __unicode__(self): return self.name class

JSONModel解析数据成Model

转自:http://blog.csdn.net/smking/article/details/40432287 JSONModel, Mantle 这两个开源库都是用来进行封装JSON->Model的, 想想看, 直接向服务器发起一个请求,然后回来后,就是一个Model, 直接使用, 这是一个多么美好的事情. 感谢GitHub的开源精神. 那我们开始吧. 先说说这两个的差别. 这两个使用的方法其实都差不多, 详细的使用方法请直接GitHub上找, 还是比较简单地. 就我个人来说JSONModel

MVC 3 数据验证 Model Validation 详解

续我们前面所说的知识点进行下一个知识点的分析,这一次我们来说明一下数据验证.其实这是个很容易理解并掌握的地方,但是这会浪费大家狠多的时间,所以我来总结整理一下,节约一下大家宝贵的时间. 在MVC 3中 数据验证,已经应用的非常普遍,我们在web form时代需要在View端通过js来验证每个需要验证的控件值,并且这种验证的可用性很低.但是来到了MVC 新时代,我们可以通过MVC提供的数据验证Attribute来进行我们的数据验证.并且MVC 提供了客户端和服务器端 双层的验证,只有我们禁用了客户

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作)

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作) 一.简单说明 使用数据刷新框架: 该框架提供了两种刷新的方法,一个是使用block回调(存在循环引用问题,_ _weak),一个是使用调用. 问题:在进行下拉刷新之前,应该要清空之前的所有数据(在刷新数据这个方法中). 移除正在显示的cell: (1)把字典中的所有的值,都从屏幕上移除 (2)清除字典中的所有元素 (3)清除cell的frame,每个位置的cell的frame都要重新计算 (4)清除可复用的缓存池. 该部分的代码如下: 1

(转)MVC 3 数据验证 Model Validation 详解

继续我们前面所说的知识点进行下一个知识点的分析,这一次我们来说明一下数据验证.其实这是个很容易理解并掌握的地方,但是这会浪费大家狠多的时间,所以我来总结整理一下,节约一下大家宝贵的时间. 在MVC 3中 数据验证,已经应用的非常普遍,我们在web form时代需要在View端通过js来验证每个需要验证的控件值,并且这种验证的可用性很低.但是来到了MVC 新时代,我们可以通过MVC提供的数据验证Attribute来进行我们的数据验证.并且MVC 提供了客户端和服务器端 双层的验证,只有我们禁用了客

浅析在QtWidget中自定义Model

Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示,它也提供一个标准的model接口,使得更多的数据源可以被这些item view使用.这里对model/view的结构进行了描述,结构中的每个组件都进行了解释.. 一直觉得Qt里的Model-View概念极其神秘, 因为看过很多一知半解的source code, 却总是咋看咋不懂,急了满头大汗之余不禁感叹 — 老了,脑子不够用了!