iOS应用数据存取的常用方式
XML属性列表 —— Plist
NSKeyedArchiver 归档
Preference(偏好设置)
SQLite3
Core Data
Core Data 是iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据。使用Core Data框架,程序员可以很轻松有效地通过面向对象的接口管理数据。
Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象。
在数据操作过程中,无需编写任何SQL语句
要使用Core Data,需要导入CoreData框架
Core Data开发步骤
1. 建立数据模型文件
2. 在数据文件中建立实体(s)并且建立实体之间的关系
3. 新建NSManagedObject对象,根据实体的定义,生成模型类
4. 如果实体文件发生变化,需要重新生成NSManagedObject类,因此对应生成类的文件不需要我们进行任何的修改
注:
NSManagedObject——对应数据库中的一条记录
Core Data主要对象
NSManagedObjectContext:负责应用和数据库之间的交互(CRUD)
NSPersistentStoreCoordinator:添加持久化存储库(如SQLite数据库),是物理数据存储的物理文件和程序之间的联系的桥梁,负责管理不同对象上下文
NSManagedObjectModel:被管理的对象模型,对应定义的模型文件
NSEntityDescription:实体描述
打开数据库
实例代码:
#pragma mark -数据库操作方法
增删查找
无论是:新增、修改还是删除操作,
都是一次性保存所有的新增记录
更新&删除记录
1、找到要更新、删除的记录
2、更新:修改对象属性
3、删除:上下文删除对象
4、上下文保存
CoreData:中多线程中处理大量数据同步时的操作
CoreData:是CoCoa中处理数据绑定数据的关键特性,提供完整的对象持久化存储方案。如果你使用sqlite3厌倦了敲打sql语句,CoreData正解决了你这烦恼。sqlite3是CoreData处理的数据类型之一,当你将CoreData和sqlite的结合起来使用的话,你将能开发出强大的数据库应用。
CoreData与多线程操作:
为了在查询数据的时候不让界面停滞,使用多线程是不可避免,一般我们会用thread,串行线程或者并发线程。coredata与多线程交互的时候,每个线程都必须拥有一个manager context对象,一般有两种方式:
1.每一个线程使用私有的manager context,共享一个 persistent store coordinator
2.每个线程使用私有的manager context和私有的persistent store coordinator
对于这两种方式,我们比较推荐使用第一钟方式,因为使用第二种方式的会消耗我们更多的内存,所以推荐使用第一种。注意:CoreData里面还带有一个通知NSManagedObjectContextDidSaveNotification,主要监NSManagedObjectContext的数据是否改变,并合并数据改变到相应context