美文网首页2016技术笔记
2016笔记——NSUserDefault

2016笔记——NSUserDefault

作者: 满庭花醉三千客 | 来源:发表于2018-07-27 14:07 被阅读3次

    NSUserDefault是接触比较早的数据持久化方法了,简单易用,但是之前一直没有想过该怎么样才能存储自定义的对象。

    今天试了一下:

    把一个自定义的Person对象存到数组中,然后把数组作为一个Value,存到本地。想法是好的,但是事实就是很残忍了。。看一下实现和效果:

    屏幕快照 2016-04-18 17.44.42.png

    效果:

    屏幕快照 2016-04-18 17.44.19.png

    给我的就一个大大的崩溃。。

    问题出现了不能不处理,最终找到了方案:

    1、Person签订NSCoding协议

    屏幕快照 2016-04-18 17.47.49.png

    2、实现NSCoding的方法:

    屏幕快照 2016-04-18 17.49.22.png

    3、初始化对象,将对象编码,然后将数据流存储到NSUserDefault中。

    屏幕快照 2016-04-18 17.50.38.png

    4、读取数据:

    屏幕快照 2016-04-18 17.51.20.png

    效果:

    屏幕快照 2016-04-18 17.52.08.png

    分析:

    当调用[NSkeyedArchiver archivedDataWithRootObject:person]方法时,就会触发Person类中的NSCoding协议方法 - (void)encodeWithCoder:(NSCoder*)aCoder方法,将对象编码为数据流。

    当调用[NSKeyedUnarchiver unarchiveObjectWithData:data]方法时,就会触发Person类中的NSCoding协议方法 - (id)initWithCoder:(NSCoder*)aDecoder方法,将数据流转为对象。

    NSCoding是一个你需要在数据类上要实现的协议以支持数据类和数据流之间的编码和解码。

    加油~~

    相关文章

      网友评论

        本文标题:2016笔记——NSUserDefault

        本文链接:https://www.haomeiwen.com/subject/nvzwmftx.html