前言:
学习了Sqlite数据之后认真思考了一下,对于已经习惯使用orm数据库的开发者或者对sql语句小白的开发者来说该如何做好数据库开发呢?这个上网搜了一下?看来总李多虑了!apple 提供了一种数据方式,它就是今天的主角:CoreData!我们一起来探究它是否能够满足我们项目开发的需要呢?
CoreData介绍:
Core Date是ios3.0后引入的数据持久化解决方案,它是是苹果官方推荐使用的,不需要借助第三方框架。Core Date实际上是对SQLite的封装,提供了更高级的持久化方式。在对数据库操作时,不需要使用sql语句,也就意味着即使不懂sql语句,也可以操作数据库中的数据。
CoreData优点:
Core Data实际上是将数据库的创建、表的创建、对象和表的转换等操作封装起来,极大的简化了我们的操作。Core Date与SQLite相比较,SQLite比较原始,操作比较复杂,使用的是C的函数对数据库进行操作,但是SQLite可控性更强,并且能够跨平台。
CoreData缺点:
存储性能一般,默认建立的表没有主键,效率低,复杂的查询更是不敢想像。CoreData 对批量数据的处理执行的不太好,查资料好像说IOS8推出了批量处理的一些方式。对于多线程的支持也不太好,我是xcode 7上开发的每一个entity都要生成4个类,打个比方一个项目中要建10个表那就要维护40个类,你说累不累?
怎么使用CoreData?
第一步:在项目中引入CoreData.framework
第二步:创建xxxx.xcdatamodeld
第三步:模型对象的实体
接下来就是具体实现:具体实现之前先来认识如下几个对象
(1)NSManagedObjectModel(被管理的对象模型)
相当于实体,不过它包含 了实体间的关系
(2)NSManagedObjectContext(被管理的对象上下文)
操作实际内容
作用:插入数据 查询 更新 删除
(3)NSPersistentStoreCoordinator(持久化存储助理)
相当于数据库的连接器
(4)NSFetchRequest(获取数据的请求)
相当于查询语句
(5)NSPredicate(相当于查询条件)
(6)NSEntityDescription(实体结构)
为了方便实现,本文整理一个数据管理类来测试CoreData:CoreDataManager
CoreDataManager.h
#import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @interface CoreDataManager : NSObject<NSCopying> @property(strong,nonatomic,readonly)NSManagedObjectModel* managedObjectModel;//管理数据模型 @property(strong,nonatomic,readonly)NSManagedObjectContext* managedObjectContext;//管理数据内容 @property(strong,nonatomic,readonly)NSPersistentStoreCoordinator* persistentStoreCoordinator;//持久化数据助理 //创建数据库管理者单例 +(instancetype)shareManager; //插入数据 -(void)insertData:(NSString*)tempName; //删除数据 -(void)deleteData; //删除数据 -(void)deleteData:(NSString*)tempName; //查询数据 -(void)queryData; //根据条件查询 -(void)queryData:(NSString*)tempName; //更新数据 -(void)updateData:(NSString*)tempName; @end