美文网首页
iOS开发之归档

iOS开发之归档

作者: loghm | 来源:发表于2017-05-06 17:37 被阅读176次

    对于iOS开发中的归档,最近刚好在项目中使用到了归档,所以查了查资料,查缺补漏,现总结如下:
    什么时候使用归档?

    归档是为了存储一些自定义对象,本质上是文件的存储。它不同于plist属性存储,plist可以存储集合类型(NSArray,NSMutableArray,NSString..),但是不可以存储对象,归档存储的是NSData类型数据。只要对象支持NSCoding协议,就可以被归档。还有一点是对象归档的文件是保密的,磁盘上无法查看文件中的内容,而属性列表是明文的可以查看

    存储的位置?

    这里涉及到ios中的沙盒机制。什么是沙盒机制呢?
    <pre>
    沙盒机制是ios为了数据安全特别适用的一种安全体系。iOS应用程序只能访问自己的目录
    应用程序与应用程序之间禁止数据共享和访问。特定的应用,比如联系人,需要特定的API
    才可以共享数据。当应用安装之后,会在手机里面开辟一个沙箱目录,这个目录之中有三个
    子目录,分别是Document,Library,tmp。
    Document:用于存储比较大的需要频繁更新数据;
    Library:基于NSUserDefaults的首选项设置存储在 Library/Preferences
    文件夹中,且Library下面有Preferences和Caches目录;
    tmp:用于存储临时文件
    归档使用是Document目录,获得该目录的方法是:
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    其中:第一个常量NSDocumentDirectory表示正在查找沙盒Document目录的路径
    (如果参数为NSCachesDirectory则表示沙盒Cache目录),第二个常量
    NSUserDomainMask表明我们希望将搜索限制在应用的沙盒内;
    (在Mac OS X中,此常量表示我们希望该函数查看用户的主目录,因此才会有这个命名;)
    </pre>

    如何使用归档来存储自定义对象?

    使用归档,最重要的就是归档自定义模型类。首先申明模型对象的属性:


    模型类声明属性.png
    模型类实现NSCoding协议方法.png
    归档模型对象.png

    在开发过程中,每一个需要归档的类都需要实现NSCoding的方法,都要实现编码、解码的重复性动作,如果该对象属性很多的情况下,我们的效率就变的很低了,我们可以使用MJExtension来简化这个过程,这是一套字典和模型之间互相转换的超轻量级框架,里面也有归档的接口。只需要一句话,就可以解决问题.
    MJExtensionCodingImplementation或者MJCodingImplementation

    相关文章

      网友评论

          本文标题:iOS开发之归档

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