iOS 数据库篇(一) CoreData 认识与入门---原理讲解篇

来源:互联网 发布:淘宝的游戏藏宝湾 编辑:程序博客网 时间:2024/06/03 20:24

众所周知,在日常的开发项目中,免不了要使用数据库这个东西来进行数据上的管理,虽然iOS 是移动端开发,但是把一些用户数据等一些数据进行缓存,存储,会大大节省开发效率以及提升用户体验,说起数据库,先下主流的方式有两种,一种是用基于 SQL 开发的数据库(现下大多数用 FMDB第三方库来开发)另一种则是 iOS 原生的 CoreData 来进行数据库开发.今天我们要来学习的就是 CoreData

CoreData 是一个纯粹面向对象的框架,可以管理实体以及实体之间的关联关系的持久化,也就是我们常说的数据持久化.

优点:

  • 1.不用写 SQL 语句,这对于有些同学来说应该是一个福音,而且 SQL 语句错误时会导致问题不便于找出来,所以这也是一个便捷错作啦
  • 2.代码清晰,如果有语法错误会即使提示,而不是等到运行时才知道错误.
  • 3.配备可视化的结构,让对于字段的增删清晰明朗

缺点:

  • 1.是一个重量级的数据库管理,产生很多代码量
  • 2.对于复杂的联合表查询不适用
  • 3.出错不容易解决或找到问题,需要有很深的开发功底
  • -

那我们先来了解 CoreData 的基本结构吧

  • NSManagedObiectModel(托管对象模型):

    该对象负责管理整个应用的所有实体以及实体之间的关联关系。当开发者使用Xcode的图形界面设计了实体与实体的关联关系之后,需要使用该对象来加载、管理应用的托管对象模型。

  • NSPeristentStoreCoordinator(持久化存储协调器):

    负责管理底层的存储文件,例如SQLite数据库等。

  • NSManagedObjectContext(托管对象上下文):

    该对象是Core Data的核心对象,应用对实体所做的任何增、删、查、改操作都必须通过该对象来完成。

  • NSEntityDescription(实体描述):

    该对象代表了关于某个实体的描述信息,从某种程度来说,该对象相当于实体的抽象。实体描述定义了该实体的名字、实体的实现类,并用一个集合定义了该实体包含的所有属性。

  • NSFetchRequest(抓取请求):

    抓取请求NSFetchRequest:该对象封装了查询实体的请求,包括程序需要查询哪些实体、查询条件、排序规则等。抓取请求定义了本次查询的实体的名字、抓取请求的查询条件,通过NSPredicate来表示,并用一个NSArray集合定义了所有的排序规则。

    下面通过一张图来理解 它们之间的关联
    这里写图片描述

这里写图片描述

CoreData 可以看做是由两部分组成

  • 一个是NSManagedObjectContext管理的模型部分,管理着所有CoreData的托管对象。里面存储的是一个个的 MO 对象

  • 一个是SQLite实现的本地持久化部分,负责和SQL数据库进行数据交互,主要由NSPersistentStore类操作。

    了解原理后,我们大致可以知道使用的步骤以及使用的方法,将在下一篇博客里面书写 CoreData 创建与使用

原创粉丝点击