iOS数据持久化——简单介绍

来源:互联网 发布:ipad淘宝卖家登陆页面 编辑:程序博客网 时间:2024/06/07 05:46
iOS有一套完整的数据安全体系,iOS应用程序只能访问自己的目录,这个目录称为沙箱目录,而应用程序间
禁止数据的共享和访问。

下面的目录是iOS平台的沙箱目录,我们可以在模拟器下面看到,在真实设备上也是这样存储的:

/Users/<用户>/Library/Application Support/iPhone Simulator/6.0/Applications/A262B02A-1975-4A7A-AB8C-C181E2CC059A
其中A262B02A-1975-4A7A-AB8C-C181E2CC059A是应用程序ID,在安装时由系统分配。DocumentsLibrarytmp
都是沙箱目录的子目录,其目录结构如下所示:
├── Documents
│ └── NotesList.sqlite3
├── Library
│ ├── Caches
│ └── Preferences
├── tmp
└── PresentationLayer.app

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

NSArray * documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//其中documentDirectory是只有一个元素的数组,因此还需要使用下面的代码取出一个路径来:NSString * myDocPath = [documentDirectory objectAtIndex:0];//或NSString * myDocPath = [documentDirectory lastObject];

2. Library目录
在Library目录下面有Preferences和Caches目录,其中前者用于存放应用程序的设置数据,后者与Documents很相似,可以存放应用程序的数据,用来存储缓存文件。
3. tmp目录
这是临时文件目录,用户可以访问它。它不能够进行iTunes或iCloud的备份。要获取目录的位置,可以使用如下代码:

NSString *tmpDirectory = NSTemporaryDirectory();


【持久化方式】
持久化方式就是数据存取方式。iOS支持本地存储和云端存储,这里主要介绍本地存储,主要涉及如下4种机制。
1.属性列表。集合对象可以读写到属性列表文件中。
2. 对象归档。对象状态可以保存到归档文件中。
3. SQLite数据库。SQLite是一个开源嵌入式关系型数据库。
4. Core Data。它是一种对象关系映射技术(ORM),本质上也是通过SQLite存储的。
采用什么技术,要看具体实际情况而定。属性列表文件和对象归档一般用于存储少量数据。属性列表文件的
访问要比对象归档的访问简单,Foundation框架集合对象都有对应的方法读写属性列表文件,而对象归档是借助
NSData实现的,使用起来比较麻烦。SQLite数据库和Core Data一般用于有几个简单表关系的大量数据的情况。如
果是复杂表关系而且数据量很大,应该考虑把数据放在远程云服务器中。

0 0