核心数据概述
核心数据是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的程序化方法。 由于您对所使用的术语有一个很清楚的了解,因此对核心数据的编程方法将更容易理解。
始终记住,核心数据堆栈由三个对象组成,并且每个对象都有特定的作用。
玩转核心数据!