iOS-数据库本地存储简介
iOS有一道经典的面试题:数据的持久化存储有哪些方式?
标准答案:常见的持久化存储方法有NSUserDefaults、plist、归档存文件、sqlite、CoreData已经新兴的Realm
这样的答案对付面试官应该是够了,而实际运用中,你真的能搞清这些技术面向的场景么?
技术分类
偏好设置
偏好设置是最简单的归档方式,适合存储简单的配置条目。使用NSUserDefaults单例就可以存储一些可序列化的类,通过keyValue的方式写入和读取,偏好设置实际上是一个plist文件
plist文件、归档
plist和归档都是将对象整体保存到文件内
iOS开发里,plist随处可见,它比较像是json的表格可视化文件,能够存储一些可序列化的类型,如下
NSArray;NSMutableArray;NSDictionary;NSMutableDictionary;NSData;NSMutableData;NSString;NSMutableString;NSNumber;NSDate;
归档能够将遵守NSCoding协议的对象整体打包保存到文件里,从文件里解档读出的对象也可直接使用
sqlite、CoreData、Realm
这三类都属于数据库存储,除了能够将数据逐条保存下来,最大的优势就是能够查询。当然,这三类数据库都有着自己的学习曲线,每个都需要一定的时间去掌握
需求及技术分析
技术应当紧紧围绕需求,根据不同的用途选择最匹配的方式,很重要!!!
简单举几例,来说明在实际项目中,各存储方式的应用场景
偏好设置
用户的设置:例如字体大小、音乐播放的码率之类的简单数据,APP是否是第一次登陆、版本号等程序需要的参数
plist文件、归档
比如某商品推荐APP,需求希望缓存10个商品,避免网络加载时显示空白。最简便的方法就是将10个商品的模型放进数组,一次性打包成data保存到文件里,需要的时候直接解档就可以使用
sqlite、CoreData、Realm
数据库最大的存储优势其实就在于查询,能想到最需要数据库本地存储,就是TODO List类的APP,需要存储各种事务安排,并且能够分类排序查询
链接:https://www.jianshu.com/p/72dbc7a4282c