iOS本地数据存储总共就集中方案:
- 属性列表(plist存储)
- 系统存储(NSUserDefaults)
- 归档序列化存储
- 沙盒存储
- Core Data存储
- sqlite3存储
-
属性列表(plist存储)
属性列表存储方式又叫plist文件存储,主要是用于存储程序中不经常改变、数据量小的数据,只支持OC中的一些类型:NSArray、NSDictionary、NSString、NSNumber、Data、Date、Boolea,不支持自定义的对象存储,如果想存储自定义的对象,必须先把对象转为Data再存储。 -
系统存储(NSUserDefaults)
用于存储简单用户设置的数据,同样同样是轻量级数据存储,数据会自动保存在沙盒的Library/Preferences目录下,它的本质其实也是plist存储。此方法并不是即时把数据写入磁盘,而是定时的将缓存中的数据写入,
为了防止在写数据时程序退出而导致数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘。 -
归档序列化存储
归档可以直接将对象存储为文件,包括自定义的对象,归档后的文件是加密的,也更加安全,而且文件的存储位置可以自定义。如果是上述的plist那些类型归档,可以直接使用,但是如果是自定义的对象归档,就必须实现NSCoding协议,否则归档不生效。 -
沙盒存储
沙盒存储的目的是为了提升用户体验而生的,当用户在阅读数据、看视频、听音乐等,可以在沙盒中做数据存储,常用的文件目录如下:
Documents:最常用的目录,存放中重要数据
Library/Caches:一般存放体积较大,不重要的数据
Library/Preferences:存放用户的偏好设置
tmp:存放临时文件,在程序未运行时可能会删除此文件夹的内容 -
Core Data存储
Core Data是框架,并不是数据库,该框架提供了对象关系的映射功能,使之能够将OC对象转换成数据,也能将数据映射成OC对象,在转换过程中不需要写任何SQL语句。 -
sqlite3存储
sqlite3是轻量级数据库,占用资源少,使用时需要导入sqlite3包,另外尽量不要频繁的打开和关闭数据库,有可能会影响性能,只需要在程序启动或者使用之前打开,然后再不用的时候关闭即可。
网友评论