目前iOS数据持久化的方式大概以下几种

  • CoreData
  • plist(属性列表)
  • preference(偏好设置,也就是NSUserDefaults)
  • NSKeyedArchiver(归档)
  • Sqlite3

 

CoreData:和Sqlite比的话,这个东西苹果一直都在推崇使用这个,谁叫OC是面向对象的语言呢,用CoreData能充分的感觉到面向对象,当然如果是习惯用SQL语句的人会觉得sqlite更亲切,听人说sqlite是直接操作数据库,直接简单效率高,但作为苹果的面向对象开发,更觉得CoreData有吸引力,因为在效率上没有过大的数据测试,所以也感觉不出来效率问题,这个看个人怎么选择。我是比较喜欢使用CoreData

 

Plist:这个易用性很强,数据都是存储在plist文件中,一般是用于存储少量数据,不适合操作处理大量数据,还有一点是无法将自定义的对象序列化到属性列表中

 

Preference:也就是UserDefaults,这个易用性也很强,也是存储在plist文件中的,一般用于保存首选项信息、缓存数据,一些小验证等,适用于少量数据,和plist一样,也是无法将自定义对象序列化到属性列表中

 

NSKeyedArchive:这个数据是存储在archive文件中,一般也用于存储少量数据,最大的优点是,可以将复杂的对象写入文件,可以归档集合类,所以无论添加多少对象,将对象写入磁盘的方法都是一样的,不会增加工作量,plist和偏好设置则和这个恰恰相反,无法保存复杂对象,而且工作量会随着对象的增加而增大

 

Sqlite3:因为相关接口都是C语言接口,易用性方面不如CoreData方便,但是有FMDB这个第三方库对sqlite进行了简单的封装,还是很好用的,这个可以存储大量的数据,对于存储、检索都非常的高效,能对数据进行复杂的聚合,比使用对象执行这些操作要高效的多

 

总结一下:数据量大的话选择sqlite,当然也可以选择CoerData,这2个选择是看自己喜欢哪个,Preference用于少量数据,主要存储一些缓存、首选项信息等,数据不多,但是对象比较复杂的话,使用归档,plist文件其实和偏好设置差不多