iOS数据持久化

iOS本地数据存储总共就集中方案:

  • 属性列表(plist存储)
  • 系统存储(NSUserDefaults)
  • 归档序列化存储
  • 沙盒存储
  • Core Data存储
  • sqlite3存储
  1. 属性列表(plist存储)
    属性列表存储方式又叫plist文件存储,主要是用于存储程序中不经常改变、数据量小的数据,只支持OC中的一些类型:NSArray、NSDictionary、NSString、NSNumber、Data、Date、Boolea,不支持自定义的对象存储,如果想存储自定义的对象,必须先把对象转为Data再存储。

  2. 系统存储(NSUserDefaults)
    用于存储简单用户设置的数据,同样同样是轻量级数据存储,数据会自动保存在沙盒的Library/Preferences目录下,它的本质其实也是plist存储。此方法并不是即时把数据写入磁盘,而是定时的将缓存中的数据写入,
    为了防止在写数据时程序退出而导致数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘。

  3. 归档序列化存储
    归档可以直接将对象存储为文件,包括自定义的对象,归档后的文件是加密的,也更加安全,而且文件的存储位置可以自定义。如果是上述的plist那些类型归档,可以直接使用,但是如果是自定义的对象归档,就必须实现NSCoding协议,否则归档不生效。

  4. 沙盒存储
    沙盒存储的目的是为了提升用户体验而生的,当用户在阅读数据、看视频、听音乐等,可以在沙盒中做数据存储,常用的文件目录如下:
    Documents:最常用的目录,存放中重要数据
    Library/Caches:一般存放体积较大,不重要的数据
    Library/Preferences:存放用户的偏好设置
    tmp:存放临时文件,在程序未运行时可能会删除此文件夹的内容

  5. Core Data存储
    Core Data是框架,并不是数据库,该框架提供了对象关系的映射功能,使之能够将OC对象转换成数据,也能将数据映射成OC对象,在转换过程中不需要写任何SQL语句。

  6. sqlite3存储
    sqlite3是轻量级数据库,占用资源少,使用时需要导入sqlite3包,另外尽量不要频繁的打开和关闭数据库,有可能会影响性能,只需要在程序启动或者使用之前打开,然后再不用的时候关闭即可。

你可能感兴趣的:(iOS数据持久化)