iOS中数据持久化可以有很多中方式,大致有NSUserDefault,Keychain,Archiver,write写入,CoreData,SQLite等一些常见的存储方式。
1.NSUserDefault是一种轻量级的存储方式,主要存储一些账户信息小型数据,使用起来非常便捷。
2.keychain存储密码,证书等私密的信息,用keychain存储的信息不会因为app被删除而丢失,重新安装app依然有效,数据还在。
3.Archiver归解档其实是将对象写入到文件中。
4.write写入方式也是讲数据保存到对应的文件中,NSFileManger,Plist大致就是属于这一种。
5.CoreData它提供了对象昂-关系银蛇(ORM)的功能,既能够将OC对象转化成数据,保存在SQLite数据库中文件中,也能够保存将OC对象转化成数据。
6.SQLite是轻量型的数据库,一般用在移动设备中,需要使用SQL语句来实现。
这是对各种存储方式的简单介绍,下面先具体介绍下NSUserDefault的用法,后续挨个讲解不同存储方式的用法。
NSUserDefault其实主要就两个方法 一个是存储
[[NSUserDefaults standardUserDefaults] setObject: forKey:];
另一个是读取
[[[NSUserDefaults standardUserDefaults] objectForKey:]
,以键值队的形式来存储。不过这里面也会有很多坑
1.存储的必须是指定的一些数据类型,字符串,数组,data等,不能直接插入对象,所以需要做一层转换。
2.另外在使用字典做转化存储的时候,最好做一层安全措施,使用字典的一个分类,在当存储的数据是nil或者NSNull的时候转换为空字符串处理。
分类如下图
附上一张项目实际用到的,在非登录下单状态下进行本地保存联系人信息。