iOS数据持久化

 一      概述

      iOS拥有一套完整的数据安全体系,iOS应用程序只能访问自己的目录,这个目录称为沙箱目录,而应用程序间禁止数据的共享和访问.访问一些特殊的应用时,如联系人应用,必须通过特定的API访问.

 二     沙箱目录

    沙箱目录是一种数据安全策略,很多系统都使用沙箱设计,实现HTML5 规范的一些浏览器也采用了沙箱的设计.沙箱设计目录设计的原理就是只能允许自己的应用访问目录,而不允许其他的应用访问.在iOS系统中,特有的应用需要特定的API才可以共享数据,而其他的应用之间都不能共享数据.

     沙箱的子目录有:Documents    Library     and   tmp            

     下面分别介绍这三个子目录的用途,场景和访问方式:

 1   Documents

该目录用于存储非常大的文件或需要非常频繁更新的数据,能够进行iTunes或iCloud的备份.获取目录位置的代码:

NSArray *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUeserDomainMask,YES);

其中documentDirectory 是只有一个元素的数组,因此还需要使用下面的代码取出一个路径来:

NSString *myDocPath = [documentDirectory objectAtIndex:0];

或者

NSString *myDocPath = [documentDirectory lastObject];\

因为documentDirectory数组只有一个元素,所以取第一个元素和最后一个元素都是一样的,都可以取出Document目录.


2  Library 目录

在Library 目录下面有Preferences 和Caches 目录,其中前者用于保存应用程序的设置数据,后者和Document很相似,可以存放应用程序的数据,用来存储缓存文件.


3 tmp目录

这是临时文件目录,用户可以访问它.它不能够进行iTunes或iCloud的备份.要获取该目录的位置,可以使用如下的代码

NSString *tmpDirectory = NSTemporaryDirectory();





数据持久化的四种方式:

1 属性列表

  属性列表文件是一种xml文件,Foundation框架中的数组和字段等都可以于属性列表文件互相转换



2 对象归档

对象归档是一种序列化方式. 为了方便数据传输,先将归档对象序列化为一个文件,然后通过反归档将数据恢复到对象中.归档技术可以实现数据的持久化,不过在大量数据和频繁读写的情况下,就不太适合了.

  对一个对象进行完整归档需要满足的条件为:该对象的类必须实现NSCoding协议,而且每个成员变量应该是基本数据类型或者都是实现NSCoding协议的某个类的实例.


3 数据库

SQLite 采用C语言编写,具有可移植性强,可靠性高,小而容易使用的特点.SQLite运行时与使用它的应用程序之间公用相同的进程空间,而不是单独的两个进程.


4 Core Data

   Core Data 是苹果为Mac OS X 和iOS 系统应用开发提供的数据持久化技术.他基于高级数据持久化API,器底层最终还是SQLite数据库,二进制文件和内存数据保存,这样开发人员不再关心数据的存储细节问题,不再使用SQL语句,不再面对SQLite的C语言函数.

  Core Data 是一种ORM(对象关系映射)技术,ORM是关系数据模型和对象模型类之间的一个纽带.


   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值