iOS中的数据持久化

439 查看

本文由我们团队的王瑞华童鞋撰写。


数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。 数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。在iOS开发中,有很多种数据持久化方案,本文主要介绍 plist文件,NSKeyedArchiver,SQLite3,NSUserDefaults。

iOS的沙盒模型

iOS最为人所熟知的就是其沙盒模型,一个App的读写权限只限于自己的沙盒目录中。沙盒模型的好处有哪些?1. 安全,别的app无法修改你的程序。2. 保护隐私,别人app无法读取你的程序。3.便于系统管理,一个app产生的内容都包含在自己的沙盒中,便于系统管理。
iOS 沙盒目录结构如下

如果我们想获取上面某个目录的路径,应该如何实现呢?

对于最常用的Documents目录,iTunes同步该应用时会同步该文件夹内容,适合存放用户重要数据

Library/Caches:iTunes不会同步该文件夹

Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。

tmp:此目录适合保存应用中的一些临时文件,用完就删除。

NSFileManager

在实际项目开发中,我们一般会创建一个工具类来对app的文件进行管理。
NSFileManager 提供一个类方法获得一个单例。

下面是NSFileManager的常用方法

plist 文件

plist文件的实质为XML文件,很容易查看到文件数据类型。可以被plist文件序列话的类型只有以下几种:

  • NSArray, NSMutableArray
  • NSDictionary, NSMutableDictionary
  • NSData, NSMutableData
  • NSString, NSMutableString
  • NSNumber
  • NSDate

而在实际的项目中,我们一般是将NSDictionary或NSArray的对象保存到文件或者从文件读取成对象。NSDictionary和NSArray会直接写成plist文件。