iOS保存model数据(自定义Model 可以存放到本地)
2015-08-31 18:43
961 查看
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
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
相关文章推荐
- iOS7 CookBook精彩瞬间(二)NSSet、通过Subscript访问类成员等
- iOS7 CookBook精彩瞬间(二)NSSet、通过Subscript访问类成员等
- JS判断客户端是否是iOS或者Android
- IOS 点击空白处隐藏键盘的几种方法
- iOS OC与js的交互
- IOS第16天(1,Quartz2D基本图像绘制)
- iOS开发 - 使用相册、照相机和录像
- iOS Ad-Hoc测试发布版本应用
- ios多线程 GCD使用
- iOS 官方文档翻译地址已经迁移到github上了
- 使用正则提取url(iOS)
- iOS开发日记12-广告轮播collectionView
- iOS navigationBar背景透明
- IOS学习笔记 ---- 15/08/31
- iOS —— MagicalRecord的使用
- 转-iOS开发系列--地图与定位
- iOS开发-归档与数据恢复
- IOS CoreText.framework --- 基本用法
- IOS KeyChain理解及代码事例
- iOS 万能跳转界面方法 (runtime实用篇一)