CoreData

17 Mar 2025 | 6 分钟阅读

CoreData 是 Apple 提供的框架,用于在 iOS 应用程序中保存、跟踪、过滤和修改数据。它不是数据库,但它使用 SQLite 作为其持久存储。它用于管理应用程序中的模型层对象。它管理对象图、跟踪数据更改并在用户交互时修改数据。

在教程的前一节中,我们已经看到了如何使用用户默认值来存储短数据。但是,在本教程的这一部分中,我们将讨论如何使用真正的数据库框架(如 CoreData)来存储、修改和过滤应用程序数据库中的用户数据。

如何在 iOS 应用程序中使用 CoreData

在这里,我们将创建一个包含 CoreData 作为框架的 iOS 应用程序,以存储和持久化数据对象。

让我们创建一个单视图 iOS 应用程序来演示 CoreData 的基础知识。要启用应用程序使用 CoreData,我们必须选中底部显示的“使用 CoreData”选项。

CoreData

现在,我们已成功创建了带有 CoreData 支持的 CoreDataExample 项目。如果我们观察,XCode 项目中有两个显著的变化。首先,Core Data 堆栈代码已添加到 AppDelegate 文件中。CoreData 堆栈代码附带有清晰的文档,以简短的注释形式出现。它设置 persistentContainer 并在有任何更改时保存数据。CoreData 堆栈代码显示在下图中。

CoreData

其次,新文件 CoreDataExample.xcdatamodeld 已添加到应用程序的包中。它充当数据的模型层。我们可以将实体、属性和关系添加到模型层中。

CoreData

将实体添加到 CoreData 模型

我们可以通过选择文件底部提供的“添加实体”选项将实体添加到 xcdatamodeld 文件中。在文件的右侧窗格中,我们可以向实体添加属性、关系和提取的属性。

在这里,我们创建了一个 Student 实体,并在模型中添加了三个属性 id、age 和 name,如下图所示。

CoreData

现在,我们已经创建了我们的模型 Student。让我们向此模型添加一些记录。该模型将被保存到 CoreData 中。

要将记录添加到模型中,我们需要按照以下步骤操作。

  • 实例化 persistentContainer。
  • 创建 context 对象。
  • 创建一个实体对象。
  • 创建一个新的记录对象。
  • 设置每条记录的值。

要引用 persistentContainer,我们需要实例化 AppDelegate。AppDelegate 的实例是使用以下代码形成的。

要创建 context,我们可以使用下面的代码使用 persistentContainer 引用。

现在,我们需要使用我们刚刚创建的 context 引用来创建实体。

现在,我们需要将新的 Student 记录创建为实体对象。

现在,让我们向新创建的实体对象添加一些记录。

我们创建了一个 AppDelegate 对象、context、实体和实体对象。我们还设置了新创建的实体对象的值。

现在,我们需要将数据保存在 CoreData 中。要保存数据,我们使用 context 对象来保存 context。我们必须将此代码包装在 try-catch 块中。

现在,如果我们在应用程序中运行,我们的数据将被保存在 CoreData 中。

AppDelegate.swift 和 ViewController.swift 文件包含以下代码。

AppDelegate.swift

ViewController.swift

获取记录

从 CoreData 中获取记录非常简单。我们需要实例化 NSFetchRequest 类并创建一个请求对象。我们可以将此请求对象传递给 NSManagedContext 引用的 fetch() 方法。

以下代码可用于从 CoreData 中获取数据。

现在,ViewController.swift 文件包含以下代码。


下一个主题托管对象模型