39(0)数据存储

文件存储有四种方案:NSUserDefault,KeyChain,File,DB

File :plist,Archiver,Stream

DB: CoreData和 FMDB


Plist(NSArray/NSDictionary)存入到文件

Preference(系统的偏好设置/NSUserDefault)  用于存储配置信息

NSCoding(NSKeyedArchiver/NSKeyedUnarchiver) 归档解档

FMDB:是对SQLite3的封装,这里FMDB引入了一个MFDatabase对象来表示数据库,打开数据库和后面的数据库操作全部依赖此对象。 用于存储查询需求较多的数据

一般来说应用中的格式化的文本类数据可以存放在数据库 中,尤其是类似聊天记录、Timeline等这些具有条件查询和排序需求的数据。

Core Data  用于规划应用中的对象  是一个管理方案,它的持久化可以通过SQLite、XML或二进制文件储存。它可以把整个应用中的对象建模并进行自动化的管理。从归档文件还原模型时CoreData并不是一次性把整个模型中的所有数据都载入内存,而是根据运行时状态,把被调用到的对象实例载入内存。框架会自动控制这个过程,从而达到控制内存消耗,避免浪费。 无论从设计原理还是使用方法上看,CoreData都比较复杂。因此,如果仅仅是考虑缓存数据这个需求,CoreData绝对不是一个优选方案


CoreData的使用场景在于:整个应用使用CoreData规划,把应用内的数据通过CoreData建模,完全基于CoreData架构应用。

使用基本对象类型定制的个性化缓存方案:从需求出发分析缓存数据有哪些要求:按Key查找,快速读取,写入不影响正常操作,不浪费内存,支持归档。这些都是基本需求,那么再进一步或许还需要固定缓存项数量,支持队列缓存,缓存过期等。


iOS平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗?

iOS中可以有四种持久化数据的方式: 属性列表、对象归档、SQLite3和Core Data

coredata可以使你以图形界面的方式快速的定义app的数据模型,同时在你的代码中容易获取到它。

coredata提供了基础结构去处理常用的功能,例如保存,恢复,撤销和重做,允许你在app中继续创建新的任务。

在使用coredata的时候,你不用安装额外的数据库系统,因为coredata使用内置的sqlite数据库。

coredata将你app的模型层放入到一组定义在内存中的数据对象。

coredata会 追踪这些对象的改变,同时可以根据需要做相应的改变,例如用户执行撤销命令。

当coredata在对你app数据的改变进行保存的时 候,core data会把这些数据归档,并永久性保存。

mac os x中sqlite库,它是一个轻量级功能强大的关系数据引擎,也很容易嵌入到应用程序。可以在多个平台使用,sqlite是一个轻 量级的嵌入式sql数据库编程。

与coredata框架不同的是,sqlite是使用程序式的,sql的主要的API来直接操作数据表。

Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS)。

虽然Core Dta支持SQLite作为一种存储类型, 但它不能使用任意的SQLite数据库。

Core Data在使用的过程种自己创建这个数据库。Core Data支持对一、对多的关系。

推荐阅读更多精彩内容