美文网首页
iOS对象归档

iOS对象归档

作者: abner009007 | 来源:发表于2018-07-26 14:58 被阅读25次

终结一下iOS的对象归档问题.

1:这个对象为什么需要归档

2:使用归档的时候需要注意什么

3:归档以后写进本地,取出

4:使用

一步步解决问题开始:

1:为什么要用呢?  因为数据可以不用每次到网路请求就可以直接拿到啊.方便啊.就比如说userInfoModel类,这个app运行完事以后,下次需要直接自动登录,登录之前是不是有什么头像的url啊,还有各种信息判断啊,这个时候就不合适NSUserDefaults了,可以直接把userInfoModel类进行归档

2:需要经历怎么样的过程才可以进行归档呢?这是个问题! 

第一步:当然是先有userInfoModel类了,自己创建一个

第二部:当然是这个userInfoModel类需要实现NSCoding协议啦,然后是实现两个必要方法了

方法一:encodeWithCoder:(NSCoder *)aCoder

在此方法中需要对每个属性进行encode,encode有多种属性类型encodeBool,encodeInt,encodeObject…….

方法二:initWithCoder:(NSCoder *)aDecoder

在此方法中需要对每个属性进行decode,decode有多种属性类型decodeBool,decodeInt,decodeObject……..

(ps一定要记住:不要写错键值key,不然会找不到对应)

3:归档以后就可以写入本地吗?  答案是一定的!

需要写入本地的时候呢?当然需要先有个可写入的路径喽! 有路径以后接可以直接使用[NSKeyedArchiver archiveRootObject:userInfo toFile:RSUserInfoPath];写入这个userInfoModel类.(要是这个类没有创建,没有赋值,岂不是很冤枉).

4:使用呢?怎么拿出来用呢?

AppointmentProjectUserInfoModel *userInfo = [NSKeyedUnarchiver unarchiveObjectWithFile:RSUserInfoPath];呵呵哒,就是这样拿出来喽!直接通过路径去拿出来.

注意啦,这个时候有可能拿到的是nil,,,为什么呢?因为你要是在存进去之前就拿的话,那就是nil了.所以这个时候一般是需要判断一下的,

+ (AppointmentProjectUserInfoModel *)userInfo

{

    AppointmentProjectUserInfoModel *userInfo = [NSKeyedUnarchiver unarchiveObjectWithFile:RSUserInfoPath];

    return userInfo? userInfo : [[AppointmentProjectUserInfoModel alloc]init];

}

到此,就算是这个功能可以使用了!  就算是文章的完结了吗?不,不是这个样子嘀!!!!!!!!!!!

以上有提到,在实现NSCoding协议的时候每次需要给每个属性进行编码,解码,,,,,属性比较少的情况下还好说,要是很多呢?那不得写死了.反正我是不会这么干的………..谁类谁知道!

那就开始说一下便捷式的吧!

首先:还是先有userInfoModel类了

然后实现NSCoding协议,但是不写实现方法!  为什么呢?因为需要使用的是#import “MJExtension.h”(MJExtension是一个很强大的库,需要了解的话请到百度Google一下)

先导入一下#import “MJExtension.h”,

然后在.m文件中加一句MJCodingImplementation:比如

然后,重复---------3:归档以后写进本地,取出4:使用

是不是很牛叉!    这个方式依然适用于model里面嵌model的方式,不需要继承!

相关文章

  • 2021-08-20

    iOS swift NSKeyedArchiver 使用 iOS 中swift的归档与解挡 归档: 将对象按照一定...

  • iOS对象归档

    终结一下iOS的对象归档问题. 1:这个对象为什么需要归档 2:使用归档的时候需要注意什么 3:归档以后写进本地,...

  • iOS中三种归档(NSKeyArchieve)方式总结

    归档时iOS中一种常见的存储文件的方式。在iOS中,归档可以将一切对象,包括自定义的对象都存储在文件中,其中常见的...

  • iOS开发基础-数据存储方式(归档)

    ** 前言:**归档是iOS开发中数据存储常用的技巧,归档可以直接将对象储存成文件,把文件读取成对象。相对于pli...

  • ios 序列化

    归档是iOS开发中数据存储常用的技巧,归档可以直接将对象储存成文件,把文件读取成对象。相对于plist或者user...

  • 对模型对象进行归档(objective-c)

    对模型对象进行归档(objective-c) 对模型对象进行归档是4种将数据持久存储在iOS文件系统的机制之一 使...

  • iOS---归档与解档

    /*iOS归档小结:1.归档实际上就是一种文件保存的形式,几乎所有的对象都能够被归档存储。它使用NSKeyedAr...

  • UI控件进阶3——数据存储

    数据存储 iOS应用数据存储的常用方式?XML属性列表(plist)归档(归档:用某种格式来保存一个或者多个对象,...

  • iOS archive(归档)的总结

    iOS 归档的记录 归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存(实际上是一种文件保存的形式...

  • 牛客网 iOS 题 90-106

    牛客网 iOS 题 90-106 90.iOS 中持久化方式有哪些? 属性列表文件 对象归档 SQLite 数据库...

网友评论

      本文标题:iOS对象归档

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