model存储 swift_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值