博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS保存model数据(自定义Model 可以存放到本地)
阅读量:6114 次
发布时间:2019-06-21

本文共 1846 字,大约阅读时间需要 6 分钟。

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

 

转载于:https://www.cnblogs.com/fantasy3588/p/4773777.html

你可能感兴趣的文章
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>
HDU 4377 Sub Sequence[串构造]
查看>>
云时代架构阅读笔记之四
查看>>
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>