对于iOS中的数据持久化方式大致包括五种: 1)NSUserDefaults 2)简单对象文件读写 3)复杂对象文件写入(归档与反归档) 4)sqlite3数据库 5)CoreData技术. 面对这么多的数据持久化方式我们应该怎么去选择合适的方式呢? 下面我们来对这五种数据持久化方法进行对比:
1)NSUserDefaults
优点:简单易用,不需要我们去创建文件,数据会直接存储在沙盒内prefrences文件夹下的plist文件中
缺点:不能存储自定义的过于复杂的对象
所以,我们一般用来存储个人的偏好设置,存储本地登陆的账号密码,判断用户是否第一次启动程序等这些简单的少量数据.
2)简单对象文件读写
优点:易用性强,对于系统提供的基础类型NSString,NSArray,NSDictionary,NSData可以根据文件路径可以借助系统提供的方法直接进行数据的本地存储.
缺点:只能存储系统提供的四种基本类型,不能进行我们自定义的对象进行持久化; 新的数据会将之前的数据进行覆盖,限定了我们也是只能进行少量数据的存储.
所以,我们一般用于存储系统提供的基本类型的小量存储,不适合大量数据的存储.
3)复杂对象文件读写(归档与反归档)
优点:易用性强,最突出的是可以将复杂的对象写入文件,可以归档集合类
缺点:数据的存储其实原理和简单对象的写入原理相同,也会进行旧数据的覆盖. 而且随着对象量的增加工作量会随之增加.
所以,我们一般用来对存储少量的复杂对象.使用时需要注意旧数据覆盖的问题.
4)sqlite3数据库
优点:当前市面上使用较多的一种数据持久化方式; 可以存储大量的数据,数据不会进行覆盖;而且进行大量数据存储 检索非常高效.
缺点:基于C语言接口,使用起来较为麻烦;易用性不强;还需要熟记基本的SQL语句;
所以,我们一般会用来存储大量的数据.
5)CoreData技术
优点:支持sqlite,xml,plist等多种数据的存储,对于sqlite的存储相较于sqlite3来说使用方便,提供的可视化建模和高度的抽象封装使得代码量也大大减少;另外一个显著的优点是可以很方便的进行数据库的数据迁移.另外使用者不需要在进行数据库的学习掌握就可以完美使用
缺点:使用步骤和牵扯的类比较多,再加上抽象度较高使得CoreData使用较为麻烦
所以,对于大量的数据的本地存储我们一般使用CoreData.另外这项技术是由苹果在iOS 3.0引入,对于初学者感觉吃力,但是掌握住之后定会爱不释手.
其实,对于数据的本地持久化任何一种方式都可以进行实现,但是选择合适的方式会更有利于我们项目对于数据的处理.