Swift —核心数据

花了点时间来研究一下Core Data的使用,以下是一些摘录,后面有附参考喔!

什么是核心数据?

  • 核心数据不是数据库 ,您不应该期望它像数据库一样。
  • 广义上讲,核心数据是应用程序的模型层。 贯穿iOS SDK的是Model-View-Controller模式中的Model
  • 核心数据既不是应用程序的数据库,也不是将数据持久保存到数据库的API。 核心数据是管理对象图的框架 。 就这么简单。 核心数据可以通过将对象图写入磁盘保留该对象图,但这不是框架的主要目标。

核心数据栈

  • 核心数据堆栈是核心数据的核心。
  • 堆栈的关键对象是托管对象模型持久性存储协调器以及一个或多个托管对象上下文

NSManagedObjectModel

托管对象模型表示应用程序的数据模型。 即使Core Data不是数据库,您也可以将托管对象模型与数据库的模式进行比较 ,也就是说,它包含有关对象图的模型或实体,它们具有哪些属性以及它们如何关联的信息。另一个。

NSPersistantStore协调员

顾名思义, NSPersistentStoreCoordinator对象将数据持久保存到磁盘,并确保持久存储和数据模型兼容。 它在持久性存储和托管对象上下文之间进行中介,还负责加载和缓存数据。 那就对了。 核心数据已内置缓存。

持久存储协调员是核心数据乐队的指挥。 尽管它在核心数据堆栈中起着重要作用,但您很少会直接与其交互。

NSManagedObjectContext

NSManagedObjectContext对象管理模型对象NSManagedObject类的实例)的集合 。 一个应用程序可能具有多个托管对象上下文。 每个托管对象上下文均由持久性存储协调器支持。

您可以将托管对象上下文视为在其上使用模型对象的工作台。 您加载它们,对其进行操作,然后将其保存在该工作台上。 加载和保存由持久性存储协调器协调。 您可以有多个工作台,例如,如果您的应用程序是多线程的,这很有用。

以上是Core Data的核心要素,ref。是多个的完整教学文章,推荐继续往下读喔!

参考 核心数据和Swift:核心数据栈

自己实作的核心数据(创建,读取,更新和删除记录)的应用范例:https://github.com/piggogo0629/FoodPin

==============后续的参考。 学习:一些重点概念================

提取记录的核心数据故障 :这是为了核心数据专门的设计,只有真正使用到的时候才会把真实数据加载到内存。

核心数据试图将其内存占用量保持在尽可能低的水平,而实现该目标所使用的策略之一就是错误 。 不久前,当我们获取实体的记录时,Core Data执行了获取请求,但是它并未完全初始化代表所获取记录的托管对象。

通常,您无需担心故障。 一旦访问托管对象的属性或关系,就会触发故障,这意味着Core Data会将故障变为已实现的托管对象。

通过NSFetchedResultsController管理数据显示

NSFetchedResultsController类是Core Data框架的一部分,用于管理获取请求的结果。 该类旨在与iOS上的UITableView和UICollectionView以及OS X上的NSTableView无缝协作。