Core Data

Core Data是苹果官方提供的管理数据层对象的框架,它提供了对象—关系映射(ORM)的功能,即能够将Objective-C对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成Objective-C对象。在此数据操作期间,不需要编写任何SQL语句。Core Data针对对象生命周期,以及持久化的对象图管理(object graph management)中的一些常见问题提供了解决方案。CoreData的主要任务是负责数据更改的管理、序列化到磁盘、最小化内存占用以及查询数据。CoreData通常能有效减少50%~70%模型层的代码量。

在学习Core Data之前,需要提前掌握下面几个术语。

实体:在Core Data中定义的类。在关系型数据库中,一个实体对应于一张表。最经典的例子是雇员和公司。
属性:实体的一部分信息。比如,一个雇员实体有名字属性、职位属性、工资属性。在数据库中一个属性对应于表中的一个字段。
关系:多个实体间的链接。在Core Data里两个实体的关系称为一对一关系。一个和多个实体的关系称为一对多的关系。比如一个经理和雇员有一对多的关系,一个经理管理着多个雇员,而一个雇员只会有一个经理。

Core Data中的核心类

NSManagedObjectModel:管理对象模型,用于描述应用程序的数据模型,这个模型包含实体(Entity)、特性(Property)、读取请求(Fetch Request)等。Core Data默认使用SQLite数据库作为存储源,因此你可以把数据类型当成数据库的表结构。NSManagedObjectContext:管理对象上下文,参与对数据对象进行各种操作的全过程,并监测数据对象的变化,以提供对undo/redo的支持及更新绑定到数据的UI。
NSPersistentContainer:相当于数据文件管理器,处理底层的对数据文件的读取与写入。一般无须与它打交道。

Core Data中的常用方法

实例化一个管理对象。在Core Data中管理的都是NSManagedObject对象,在NSManagedObject.h中也提供了用于创建NSManagedObject对象的方法。

-(__kindof NSManagerObject *)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(nullable NSManagedObjectContect *)context;

执行查询请求。在NSManagedObjectContext类中,提供了用于查询的方法,在该方法中,需要传递一个NSFetchRequest类型的参数作为查询请求,该参数中包含了查询条件等相关信息。

-(nullable NSArray *)executeFetchRequest:(NSFetchRequest *)request error:(NSError **)error;

查询条件的设置。在Core Data中,不需要编写SQL语句,但提供了NSFetchRequest类,在该类中,可以设置相关的查询条件,包括需要查询的对象、结果的排序方式(NSSortDescriptor类)以及查询条件(NSPredicate类)。由此可见,Core Data的使用更加面向对象。

+(instancetype)fetchRequestWithEntityName:(NSString *)entityName;
@property(nullable, nonatomic, strong) NSArray<NSSortDescriptor *> *sortDescriptors;
@property(nullable, nonatomic, strong) NSPredicate *predocate;

插入与删除对象。在NSManagedObjectContext类中,提供了用于针对NSManagedObject类对象的插入以及删除方法,利用这些方法就不再需要编写INSERT语句以及DELETE语句了。

-(void)insertObject:(NSManagerObject *)object;
-(void)deleteObject:(NSManagerObject *)object;
示例 todo

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值