美文网首页
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开发之归档

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

  • iOS开发之归档

    前言 归档:将对转序列化成二级制数据,并保存在文件中。 解归档:将归档后的数据反序列化成明码(能够看懂)对象,供我...

  • iOS归档总结

    iOS归档总结,高效开发,欢迎star

  • 归档-解归档

    归档-解归档 在iOS开发中,数据持久化方法很多,比如:SQL、KeyChina、CoreData、NSUserD...

  • 浅析iOS中的归档与反归档

    今天我们要搞一搞iOS开发当中的归档和反归档,在进入正题之前,我们需要了解一下归档和反归档是干什么用的。 所谓归档...

  • iOS开发之归档(NSKeyedArchiver)和反归档(NS

    1:对foundation框架的对象进行归档2:对自定义的对象进行归档3:对自定义内容进行归档注意:归档生成的文件...

  • iOS开发之归档(NSKeyedArchiver)和反归档(NS

    前言 iOS开发中难免会遇到数据存储的问题,苹果为我们提供了沙盒机制持久化存储数据 (iOS程序默认情况下只能访问...

  • iOS-12 数据存储

    1iOS数据存储之Core Data(一) - 简书 2iOS数据存储之归档 - 简书 3iOS数据存储之偏好设置...

  • iOS数据存储(一)

    iOS开发常用的数据持久化方式有NSUserdefaults(属性列表),NSKeyedArchiver(归档/解...

  • iOS开发之定位

    iOS开发之定位 iOS开发之定位

网友评论

      本文标题:iOS开发之归档

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