关于本书
Practical Core Data 是Donny Wals所著的一本书,面向希望进一步了解 Apple Core Data 框架的中高级开发人员。无论您是 Core Data 的新手,还是多年前尝试过 Core Data 的老手,您都会发现本书将带您踏上整个框架的旅程。从 iOS 13 的 NSPersistentContainer 一直到 CloudKit 同步、迁移和单元测试等功能。您将在本书中看到这一切。
Practical Core Data 向您介绍所有基本思想、概念和原则,让您尽快掌握并运行该框架。
章节概述
第 1 章 – 使用 Core Data 迈出第一步
在本章中,您将首先了解 Core Data。您将了解 Core Data 是什么、它能做什么以及如何使用它。您将了解一个简单的项目,该项目使用 Core Data 创建、更新和删除一个非常基本的模型。本章将介绍 Core Data 的模型编辑器以及封装了 Core Data 的所有基本构建块的“NSPersistentContainer”类。到本章结束时,您应该大致了解使用 Core Data 的应用程序是什么样的,它有什么能力,以及如何将 Core Data 添加到项目中。
第 2 章 – 理解 Core Data 的构建块
在我们着手在应用程序中使用 Core Data 之前,了解 Core Data 的一些基本构建块非常重要。在本章中,您将了解 NSPersistentContainer
中包含哪些组件,以及每个组件的作用是什么。您将了解诸如“NSPersistentStoreCoordinator”、“NSManagedObjectModel”和“NSManagedObjectContext”等类。
第 3 章 – 使用模型编辑器定义实体
Core Data 的模型编辑器是将 Core Data 添加到任何项目的起点。您可以在其中定义要存储的实体、它们的关系、它们的属性等等。本章将深入介绍模型编辑器。您将了解实体、关系、获取请求、瞬态属性、约束、模型版本等等。到本章结束时,您将对模型编辑器以及如何使用它来定义数据模型有深入的了解。
第 4 章 – 从 Core Data 存储中获取和显示数据
一旦为您的应用程序定义了数据模型,您将希望在您的应用程序中使用该模型。在本章中,您将学习如何使用谓词过滤数据从 Core Data 存储中检索数据。您还将了解如何使用 NSFetchedResultsController
自动响应 Core Data 存储中的更改。除了更多地了解检索数据外,您还将了解故障、批量删除和更新请求、合并策略和查询生成。到本章结束时,您应该对如何操作存储在 Core Data 存储中的数据有相当扎实的了解。
第 5 章 – 在多线程环境中使用 Core Data
在前四章中,您在一个简单的单线程环境中使用了 Core Data。您仅通过持久容器的“viewContext”与主要托管对象上下文进行了交互。在本章中,您将了解 Core Data 严格的多线程规则和背景上下文。您将了解如何安全地将托管对象从一个上下文传输到另一个上下文,如何解决上下文之间的保存冲突,以及如何在正确的托管对象上下文中安全地运行您的 Core Data 代码。到本章结束时,您将能够优化您的 Core Data 代码以优化线程的使用,并始终防止阻塞主线程。
第 6 章 – 与应用程序和扩展共享核心数据存储
许多应用程序利用 iOS 的扩展系统来构建小部件、交互式通知、共享功能、iMessage 应用程序等等。如果您的应用程序使用 Core Data,通常希望这些扩展能够访问您的 Core Data 存储并在需要时进行修改。在本章中,您将学习如何做到这一点。您还将了解如何使用 Core Data 的持久历史记录跟踪功能来自动提取您的一个扩展对您的 Core Data 存储所做的任何修改。
第 7 章 – 将您的商店与远程数据源同步
Core Data 的一个常见用途是在本地持久保存也存在于通过网络访问的服务器上的数据。这样做可以显着提高应用程序的速度和离线体验,因为您不需要依赖网络来获取您的视图所需的每条数据。在本章中,我将演示如何构建一个使用“Codable”协议和 Core Data 内置合并策略的同步策略。在向您展示基本的单向同步策略之后,我将向您展示一种更高级的双向同步策略,允许用户在离线时对记录进行修改。当用户重新在线时,这些修改将被推送到远程数据源。
第 8 章 – 将您的商店与 CloudKit 同步
在 iOS 13 中,Apple 为开发人员引入了一种便捷的方式,可以毫不费力地将他们的本地 Core Data 存储与远程 CloudKit 存储同步。此功能允许用户在他们的设备之间同步数据,而 Core Data 会自行完成所有艰苦的工作。在本章中,您将学习如何利用此功能,以及如何将数据写入 CloudKit 的私有和公共存储
第 9 章 – 更新数据模型和执行迁移
本章涵盖了关于更新 Core Data 模型你需要知道的一切。您将了解 Core Data 的自动迁移、模型映射、模型版本等。了解自动迁移的基础知识后,您将了解如何编写自己的模型映射。最重要的是,您将了解如何通过从头开始编写自己的迁移逻辑来完全控制 Core Data 的迁移过程。
第 10 章 – 调试和分析你的 Core Data 实现
了解如何在项目中使用和集成 Core Data 非常有用,但了解如何分析和调试它可能是让您的代码从优秀走向卓越的关键。本章向您介绍了一些启动参数,您可以使用它们来深入了解 Core Data 在幕后做了什么,以及使用工具分析您的代码。您将学习如何使用从 Core Data 的日志记录和 Instruments 获得的信息来改进和优化您的 Core Data 代码和用户体验。
第 11 章——在你的单元测试中使用 Core Data
我坚信每个开发人员都应该尽可能地为他们的代码编写单元测试。在本章中,我提供了一些关于如何在单元测试中正确设置和使用 Core Data 存储的指导。这将允许您通过为每个单元测试设置单独的临时存储来独立编写单元测试而不会相互干扰。
第 12 章 – 从这里去哪里?
本书应该为您在应用程序中成功实现 Core Data 做好准备。您在前几章学习了 Core Data 的基础知识,并在后面的章节中学习了更复杂的用例和概念。虽然我已尽最大努力涵盖很多内容,但总有更多内容需要学习。在本章中,如果你想在阅读完本书后进一步了解 Core Data,我将推荐一些我认为有用的文章、书籍和视频。