美文网首页首页投稿(暂停使用,暂停投稿)
iOS 数据库篇(一) CoreData 认识与入门---原理

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

作者: wanna_dance | 来源:发表于2017-06-20 21:06 被阅读275次

    众所周知,在日常的开发项目中,免不了要使用数据库这个东西来进行数据上的管理,虽然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 创建与使用

    相关文章

      网友评论

        本文标题:iOS 数据库篇(一) CoreData 认识与入门---原理

        本文链接:https://www.haomeiwen.com/subject/mumaqxtx.html