Core Data 用于 Swift:完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Core Data 以及为什么需要它?



Core Data 并不是传统意义上的库(例如 Alamofire 或 SnapKit),而是 Apple 提供的一个强大框架,用于管理数据模型并确保 iOS、macOS、tvOS 和 watchOS 应用程序中数据的持久性(保存)。它内置于 SDK 中,无需通过 CocoaPods 或 Swift Package Manager 等包管理器单独安装。



为什么需要 Core Data?在现代移动应用开发中,几乎总是需要在本地存储数据:无论是任务列表、消息历史、用户设置还是新闻缓存。Core Data 为此提供了一个完整的堆栈,其中包括:

  • 数据模型 (NSManagedObjectModel) — 描述实体、其属性和关系。
  • 上下文 (NSManagedObjectContext) — 一个“草稿”,您可以在其中处理对象,直到保存它们。
  • 持久化存储协调器 (Persistent Store Coordinator) — 连接上下文和物理存储(SQLite、XML、二进制文件等)的桥梁。
  • 持久化容器 (Persistent Container) — 一个简化的包装器(在 iOS 10 中引入),它整合了所有组件。


与简单使用 SQLite 或 UserDefaults 不同,Core Data 自动管理对象的生命周期,支持更改回滚、懒加载、缓存、验证,甚至与 iCloud 集成。这使其成为任何处理数据的严肃应用程序不可或缺的工具。



安装 Core Data



Core Data 是 Apple 系统框架的一部分。您无需执行 pip install 或 npm install。要使用它,只需将框架导入到您的项目中即可。



1. 将框架添加到项目

在 Xcode 中创建新项目时,您可以直接勾选“Use Core Data”。如果项目已存在,请手动添加框架:

  1. 在导航器(Project Navigator)中选择您的项目。
  2. 转到目标构建(Target)的“General”选项卡。
  3. 向下滚动到“Frameworks, Libraries, and Embedded Content”部分。
  4. 点击“+”并选择 CoreData.framework。


2. 创建数据模型文件

您还需要一个扩展名为 .xcdatamodeld 的文件。通常在启用 Core Data 时会自动创建。如果没有,请创建一个新文件:File → New → File → Core Data → Data Model。



3. 在代码中导入

在您将使用 Core Data 的 Swift 文件中,添加:

import CoreData


至此,安装完成。Core Data 已准备好使用。



快速入门:代码示例



让我们看一个最简单的例子:创建一个带有“name”和“age”属性的“User”实体,保存并读取数据。



步骤 1:创建数据模型

打开 .xcdatamodeld 文件。添加一个名为“User”的实体(Entity)。添加属性:name(类型 String)和 age(类型 Int16)。为此实体创建类:Editor → Create NSManagedObject Subclass。Xcode 将生成 User+CoreDataProperties.swift 和 User+CoreDataClass.swift 文件。



步骤 2:配置 Persistent Container

在 AppDelegate(或单独的 Manager)中创建容器:

import CoreData

class PersistenceController { static let shared = PersistenceController() let container: NSPersistentContainer init() { container = NSPersistentContainer(name: "YourModelName") // 您的 .xcdatamodeld 文件名 container.loadPersistentStores { (storeDescription, error) in if let error = error as NSError? { fatalError("Unresolved error \\(error), \\(error.userInfo)") } } } var cont

推荐