Core Data是苹果官方提供的一套框架,用来解决与对象生命周期管理、对象关系图管理和持久化等方面相关的问题。大多数情况下,我们引入Core Data作为持久化数据的解决方案,并利用它将持久化数据映射为内存对象。
为什么要使用Core Data呢?以下几点可供参考:
- 有丰富且良好的文档,方便新手入门、老手埋坑。这些文档多半来源于Apple官方,以及Stackoverflow。
- 有着经过很多开发者检验的代码,除了省去我们编码的精力,还有着比我们自己编码更好的代码质量。
- 苹果出品使得它与OS X或iOS开发工具链密切结合,我们可以在Xcode上进行表的设计,或者在Instruments上进行性能检测,并且在编码过程中能够很自然地维持着Cocoa开发风格。
- 本身所具有的特性,比如支持多类型外部存储、撤销/重做、KVC、复杂查询和对象映射、自动验证、并发/合并策略、数据迁移、内存策略。除此之外,还与UI展现良好结合。
需要说明的是,Core Data并不是一款关系数据库,它拥有但不限于关系数据库的功能,比如它还具有模型设计器、数据访问层的功能。
针对上面提到的Core Data所具有的功能,来了解一下它的基本结构。
当我们使用Core Data作为持久化解决方案时,自上而下可以分为如下几层(称为Core Data Stack):
Managed Object Context
|
Persistent Store Coordinator —— Managed Object Model
|
Persistent Object Store
在将用户数据存储到外部文件前,我们需要考虑以什么样的格式进行存储,所以需要先进行数据表的设计 —— 设计好的数据模型会以Managed Object Model的形式存在于内存中。采用面向对象的思想进行表的设计时,每一张表描述着一种实体(NSEntityDescription),一份NSManagedObjectModel则包含着多种NSEntityDescription。
比如,我们可以创建一份新的工程,叫cdNBA,用来记录NBA球员信息。在实际工作之前,我们需要先设计数据模型。新建一份Data Model,如下图:
将这份Data Model命名为cdNBA,与工程同名,这份数据模型在后面会以NSManagedObjectModel实例的形式存在于内存中。然后再新建Player和Team两种实体,如下图:
从上图可以看出,一份NSManagedObjectModel,如cdNBA.xcdatamodel,可以包含多份NSEntityDescription,如Player、Team,而每一份NSEntityDescription有三种属性,分别是Attributes、Relationships和Fetched Properties。
完成了逻辑上的设计之后,我们可以根据NSEntityDescription在内存中创建对象,或者将相应的内存数据存储到外部文件中(严格地讲,这里不一定是外部存储文件)。
根据NSEntityDescription创建出来的对象比较特殊,我们称之为NSManagedObject。由于它的特殊性,当我们要创建一个NSManagedObject对象时,比如Player实例,我们需要为其提供一个生存环境,称之为NSManagedObjectContext。采用龙书的译法,我将其称为NSManagedObject的上下文。我个人觉得这种说法挺合适的,因为NSManagedObjectContext记录着存在于其中的NSManagedObject的生命周期、变化状态等。
一份NSManagedObjectContext实例作为NSManagedObject在内存中的缓存地带,我们可以从外部存储文件中读取或者临时创建一批NSManagedObject对象到其中,然后在context中做CURD操作。不论是从本地读取数据,或者是将数据存储到本地文件中,都需要经过context的把关。
当我们要将内存中的数据根据NSManagedObjectModel进行持久化时,我们需要一个新的角色来做中间层:NSPersistentStoreCoordinator类。它位于context和存储文件之间,与NSManagedObjectModel结合,来为context服务,负责将context中的对象信息存储下来,或者将存储文件中的数据读取到context中。
最后就是存储文件NSPersistentStore了,可以是SQLite、二进制或者XML文件格式等。
相关推荐
### Core Data: 更新至 Swift 3 ...通过以上章节的详细介绍,读者可以系统地掌握Core Data的基础知识、工作原理、并发与同步技术以及高级查询技巧,从而能够更加熟练地使用Swift 3进行iOS应用开发。
《Core Data by Tutorials v4.0 (Swift 4)》是针对苹果开发平台的一款深入讲解Core Data技术的教程,特别适用于使用Swift 4编程语言的开发者。Core Data是Apple提供的一项强大的数据管理框架,它简化了应用程序的...
Core Data is intricate, powerful, and necessary. Discover the powerful capabilities integrated into Core Data, and how to use Core Data in your iOS and OS X projects. All examples are current for OS X...
本书《Pro Core Data for iOS》以完全更新的形式针对Xcode 4.2版本,涵盖了iOS SDK 5环境下Core Data框架的使用方法。Core Data是苹果公司推出的数据存储和检索技术,它对于开发者来说易于上手,但深入掌握却颇具...
随着企业数据处理需求的不断增长以及业务复杂性的提升,SAP推出了一种全新的技术——ABAP Core Data Services(简称CDS),旨在帮助开发者更高效地管理数据,并通过标准化的数据模型来提高开发效率及数据一致性。...
"Data Analytics with Hadoop: An Introduction for Data Scientists" ISBN: 1491913703 | 2016 | PDF | 288 pages | 7 MB Ready to use statistical and machine-learning techniques across large data sets? ...
5. **性能优化技巧**:提供了一系列提高Core Data性能的方法,包括缓存策略、批量操作等。 6. **高级主题**:包括错误处理、版本控制、实时同步等高级特性。 7. **实战案例分析**:通过具体的项目案例来展示如何在...
- **Core Data概念与基础**:Core Data是苹果公司为iOS和macOS应用提供的一个数据持久化框架。它的作用是简化对象的数据管理,可以将内存中的对象持久化到硬盘上,并可以查询存储的数据。此书在第一章“Getting ...
《Core Data by Tutorials v4.0》是关于苹果开发框架Core Data的一份详细教程,主要针对Swift 4编程语言。Core Data是苹果提供的一种数据管理框架,它为iOS、macOS、watchOS和tvOS应用程序提供了模型层的抽象和管理...
《Core Data by Tutorials》是一本专注于教授iOS开发者如何使用苹果公司的Core Data框架的教程书籍,它详尽地介绍了从基础到高级的Core Data技能。这本书特别为iOS 8和Xcode环境编写,提供了系统性地从零开始构建...
Core Data是苹果公司提供的一个框架,用于管理应用程序数据模型对象的生命周期,它简化了数据持久化过程。在本书的介绍中,作者强调了其采用的方法论,同时在本书的各个章节中都包含了一些示例和实践练习,旨在帮助...
总之,《Core Data》这本书全面覆盖了从基础到高级的Core Data使用技巧,适合不同层次的iOS开发者阅读,无论你是初学者还是经验丰富的专业人士,都能从中获益匪浅。通过系统的学习和实践,你将能够更好地利用Core ...
### Core Data - Florian Kugler Daniel Eggert #### 一、引言与Swift语言的...通过系统地学习本书,开发者不仅能掌握Core Data的基础知识,还能深入了解其高级特性,从而在实际项目中更加熟练地应用这一强大的框架。
Core Data是苹果开发框架中的一个重要组成部分,主要用于管理应用程序的数据模型。这个“Core Data 示例源码 操作xml归档”是一个示例项目,旨在演示如何在OS X平台上利用Core Data框架来处理XML档案。通过这个教程...
- **存储栈**:由多个对象构成的层次结构,用于管理和协调 Core Data 中的对象和数据存储。 - **持久化存储协调器**:管理一个或多个持久化存储(如 SQLite 数据库)。 - **上下文**:应用程序与持久化存储之间的...
- **全面覆盖**:不仅涵盖了Core Data的基础知识,还包括了许多高级特性,如并发处理和数据同步。 - **与时俱进**:尽管本书最初出版于iOS 4时代,但其中的概念和技巧仍然适用于当前的iOS开发环境。 #### 四、总结 ...
4. **全面覆盖**:从基础概念到高级技术,本书覆盖了Core Data的所有重要方面。 #### 六、版权信息 《Core Data iOS Essentials》版权所有为2011年Packt Publishing所有。本书不允许未经授权的复制、存储或传播...
4. **Core Data堆栈(The Core Data Stack)**:Core Data堆栈是指一系列协同工作的对象,它们共同完成了数据的存储和检索。这包括托管对象模型(Managed Object Model)、持久化存储(Persistent Store)和持久化...