核心数据及其基本技术

什么是核心数据?

核心数据是用于管理应用程序中的模型层对象的框架。 您可以使用Core Data作为框架来保存,跟踪和修改iOS应用程序中的数据,但是您必须了解Core Data不是数据库。 核心数据使用SQLite,因为它是持久存储,但框架不是数据库。 核心数据管理对象图,跟踪数据中的更改并执行许多其他操作。

实际上,Core Data减少了为支持模型层而编写的代码数量。 它可以轻松地自动管理和更新内存中的对象,并处理复杂的对象图,而不会影响设备的内存管理。

在本文中,我们9series 是顶级iOS应用程序开发公司 ,在这里我们将讨论核心数据,对象模型和操作等的基本技术。

托管对象模型

核心数据功能取决于您创建的用于描述应用程序的实体,属性以及它们之间的关系的架构类型。 核心数据使用称为Managed Object Model的模式,这是NSManagedObjectModel的示例。 简而言之,核心数据模型越丰富,对支持您的应用程序越有帮助。

现在,让我们创建一个带有核心数据的单视图iOS应用程序,选中该复选标记以查看核心数据的基础知识。 当您创建一个带有核心数据选中标记的项目时,您会看到两个值得注意的变化,例如,

  • demo.xcdatamodeld的新文件
  • Appdelegate文件包含核心数据堆栈代码

Appdelegate具有应用程序的持久性容器。 此实现创建并返回一个已为应用程序加载商店的容器。

新的demo.xcdatamodeld充当我们要保存的数据的模型层。 我们可以像其他任何关系数据库一样轻松地从UI添加实体,属性和关系。

将新记录添加到核心数据

将记录添加到核心数据的过程包括以下步骤:

  • 需要引用一个持久容器
  • 创建上下文
  • 添加新实体
  • 添加新记录
  • 设置所有键的记录值

让我们在ViewController中编写所有内容。 在AppDelegate中设置容器后,我们现在需要引用该容器。 让我们为用户保存数据:

现在我们已经在托管对象中设置了数据。 是时候将其保存在数据库中了。 我们必须使用do try and catch块来编写它。

从核心数据中获取数据

要从数据库中获取对象,您将使用NSFetchRequest访问该数据。 从核心数据中获取对象是此框架的最主要特征。

在此示例中,您可以使用NSFetchRequest开始,该请求解释了要返回的数据。 我们可以使用此代码从实体中获取数据。

观察托管对象的上下文

核心数据框架具有多个API,这些API可让我们实现类似NSFetchedResultsController类的行为。

如果在托管对象上下文中发生任何更改,则框架本身会使用通知来通知我们。 发生更改时,每个受管对象上下文都会触发三种类型的通知:

  • contextObjectsDidChange
  • contextWillSave
  • contextDidSave

让我们看看我们可以观察哪些通知以及如何使用它们:

1. ContextObjectsDidChange

当托管对象上下文中的托管对象更改时,CoreData发送此通知。 这意味着每次我们对托管对象执行任何CRUD操作时,对象上下文都会发布ContextObjectsDidChange通知。

2. ContextWillSave

当我们要使用托管对象上下文方法保存上下文时,Core Data会通知我们。 该通知将在保存的操作完成之前发布。

3. ContextDidSave

该观察器类似于ContextWillSave。 唯一的区别是CoreData在保存上下文后通知了我们。

如何观察通知?

视图控制器监督其引用的托管对象上下文。 通过将一个观察者添加到通知中心,我们可以轻松地观察这些通知:

如果我们将nil作为最后一个名为object的参数传递,则视图控制器将接收由应用程序创建的每个托管对象上下文的通知。 否则,它将收到有关其引用的托管对象上下文的通知。

当核心数据通知我们更改时,我们会对通知对象的userInfo字典中存储的数据感兴趣。 userInfo词典包含六个重要键:

所有这些键的值都与一组托管对象相关,这些托管对象包含从通知我们的托管对象上下文中更改的托管对象。

让我们检查一下它的优缺点:

与传统的表数据库方法相比,Core Data的主要重点是对象。 在核心数据中,您正在存储对象的内容。 核心数据可帮助我们将许多与自身有关的复杂事物抽象为一个单一的面向对象的接口,例如一对一或一对多的关系。

Core Data有一个不错的图形对象模型编辑器,可以帮助您思考架构设计。

  • 核心数据比SQLite数据库使用更多的内存
  • 它比SQLite使用更多的存储空间
  • 但是核心数据在获取记录方面比SQLite更快。

核心数据已经走了很长一段路,在多线程应用程序中使用核心数据变得很复杂。 但是自iOS 6起,它变得更加容易。Apple向Core Data框架添加了许多有用的API,以使其变得更加容易。

结论

在使用Core Data时,了解正在发生的事情并记住您创建的模式的类型非常重要,否则,一旦您的应用程序变得越来越复杂,它很容易适得其反。

在9系列中,我们是一家 顶级iPhone应用程序开发公司 ,在本文中,我们讨论了核心数据,对象模型,基本操作的要点,并希望您可能发现了一些简单的技术,这些将使您轻松使用托管技术。对象。