在iOS开发中,常用的数据持久化方法共有四种:”属性列表“,”数据归档“,”SQLite“、”CoreData“
一、属性列表
特点:不加密,所以安全性为零。常用于存储非私密的数据。比如城市列表这一类数据,读取到字典或数组非常方便。
属性列表只能存储NSString, NSNumber, NSDate, NSArray, NSDictionary这些格式的数据。不能存储自定义的数据。
二、数据归档/序列化
特点:可以进行加密处理。归档处理后转化为二进制数据。并且可以通过归档的方式将自定义对象写入文件中。
我们使用NSKeyedArchiver来对自定义的数据进行序列化,但其前提是必须遵守NSCoding协议并实现其两个协议方法。如果需要,你也可以遵守NSSecureCoding协议来增加数据的安全性。
三、SQLite
sqlite是一个轻量级、跨平台的小型数据库,其拥有可移植性高、有着和MySql几乎相同的数据库语句以及无需服务器即可使用的优点:
一、可以存储大量的数据,存储和检索的速度非常快;二、能对数据进行大量的聚合,这样比起使用对象来进行这些操作要快。
当然,它也具有明显的缺点:
一、它没有提供数据库的创建方式;
二、它基于C语言框架设计,没有面向对象的API,所以使用起来比较麻烦;
三、复杂的数据模型的数据建表相对而言比较麻烦。
当然,我们也可以使用基于sqlite封装的开源数据库FMDB来减少使用sqlite的工作量。
四、CoreData
特点:访问速度快,coredata将数据存储在不同的数据库中,并在使用时将本地数据放到内存中,加快访问速度。但是coredata是完全面向对象的,所以他的执行效率也比不上原生数据库。