核心数据概述

核心数据是Apple在macOS和iOS操作系统中提供的对象图和持久性框架。

如果您正在阅读本文,那么我认为您是Core Data的新手,您可能听说过它,并且对它的确切含义以及在何种情况下可以使用它感到好奇。本教程中的代码。 相反,我想重点介绍Core Data中使用的术语。 如果此描述适合您,请坐下。

在不了解核心数据基础知识的情况下,很难理解核心数据的来龙去脉。

什么是核心数据

核心数据通常被视为数据库。 让我为您清除此问题“不是”。 它是MVC(模型视图控制器)中的“ M”。 它是用于管理对象图并持久化对象图的框架。CoreData不是关系数据库。 它实际上是一个框架,允许开发人员以面向对象的方式从数据库存储(或检索)数据。 借助Core Data,您甚至可以在不知道任何SQL的情况下轻松地将应用程序中的对象映射到数据库中的表记录。

何时使用核心数据

该框架非常适合各种应用程序,但并非每个应用程序都应使用Core Data。 需要轻量级模型层的应用程序不应使用Core Data。 如果您想要一个管理应用程序模型层的解决方案,Core Data是一个绝佳的选择。

核心数据VS SQLite

Core Data和SQLite之间最重要的区别是SQLite是数据库,而Core Data不是。 这是最重要的区别,因为没有什么可比较的。 Core Data和SQLite是解决不同问题的解决方案。CoreData可以使用SQLite作为其持久存储,但框架本身不是数据库。

核心数据栈

核心数据堆栈是框架对象的集合。 核心数据堆栈是对象和外部数据存储之间的中介。 核心数据堆栈处理与外部数据存储的所有交互。 因此,程序员可以只专注于业务逻辑。

堆栈由3个主要对象组成。

1.管理对象模型

2.持久性存储协调员

3.管理对象上下文

1.管理对象模型

托管对象模型是NSManagedObjectModel类的实例,它加载数据模型并将其公开给Core Data堆栈。

设置应用程序的核心数据堆栈后,托管对象模型将从应用程序捆绑包中加载数据模型。

创建堆栈后, NSManagedObject加载到Stack中。

2.持久性存储协调员

持久存储协调器位于核心数据堆栈的中间。 持久性存储协调器是堆栈的核心。 它用于释放模型中存在的实体的实例。

它创建实体的新实例,并从持久性存储中检索现有实例。

NSManagedObject定义数据, NSPersistentStoreCoordinator从持久性存储中的数据中释放对象,并将该数据对象传递给NSManagedObjectContext

NSPersistentStoreCoordinator还检查数据是否处于与NSManagedObjectModel.定义匹配的状态NSManagedObjectModel. 它保留对托管对象模型和托管对象上下文的引用。

3.管理对象上下文

NSManagedObjectContext是您的应用程序与之交互最多的对象。

NSManagedObjectContext视为临时板。 如果我们想从持久性存储中获取对象,则可以将该对象的临时副本带到暂存板上。 您可以根据需要更改对象。 该对象及其关系的更改不会直接反映在持久性存储中。 仅在“保存更改”之后,更改才会反映在永久性存储中。

NSManagedObjectContext也执行对象验证。

使用核心数据的一些优势

  • 它比SQLite更快,因为它在缓存,延迟加载和内存管理方面进行了优化。
  • 核心数据获得的最大好处之一是数据的延迟加载和出错以节省内存
  • 从关系中添加/删除对象时,它始终保持前后链接的一致性

核心数据限制

  • 除了情境内存,磁盘空间等所施加的限制外,Core Data本身没有逻辑限制。
  • 如果要删除数千条记录,Core Data首先需要将每条记录加载到内存中。 这可能反过来导致性能问题。

接下来是什么?

仅仅知道核心数据中使用的术语是不够的。 我们可以对核心数据执行许多复杂的操作,例如保存,检索和修改数据,删除,跟踪数据更改,添加谓词和复杂的关系数据库。 在我的下一篇文章中,我将通过示例解释Core Data的程序化方法。 由于您对所使用的术语有一个很清楚的了解,因此对核心数据的编程方法将更容易理解。

始终记住,核心数据堆栈由三个对象组成,并且每个对象都有特定的作用。

玩转核心数据!

Interesting Posts