微信号:gh_acee3e9666da

介绍:IT出版旗舰品牌,实时发布最新鲜的IT热点图书资讯,分享优质图书内容,打造与万千精英读者良好的互动平台.

今日好书丨《Core Data》

2016-09-26 17:23 博文视点Broadview

《Core Data

苹果原生数据库首著问世

喵神领衔objc精品iOS开发系列图书

【德】Florian Kugler Daniel Eggert 著 

徐涛 钱世家 王巍 译

2016年9月出版

 

小编推荐: Core Data是个十分灵活且异常强大的框架,本书带你避开衔接,驾驭强大!objc 是全球知名 iOS 教学网站,其精品图书更是惠及无数开发者。全书由Swift 编写,并由喵神王巍组织翻译。

  • 下方评论区留下对此书的想法,选取一名幸运同学将赠此书,9月28日公布获奖用户。

  • 最佳阅读拍档《函数式Swift》



内容提要

《Core Data》向读者介绍使用Core Data 时需要特别注意的事项,这将帮助读者避开使用Core Data这个十分灵活且异常强大的框架时的一些陷阱。我们从一个简单的应用例子开始,逐步将其扩展为包含关系、高级数据类型、并发、同步以及其他很多特性的完整例子,并在这个过程中对所有这些主题进行讲解。在后半部分,我们还会超出这个基本应用所需要涉及的范围,将知识点深入扩展到Core Data 幕后的工作原理上。我们会学习如何获取高性能、不同Core Data 设置之间的权衡,以及如何对Core Data 代码进行调试和性能测试。《Core Data》所有的代码都使用Swift 编写,我们也展示了如何将Swift的语言特性融入Core Data 中,并写出优雅和安全的代码。我们希望读者在阅读本书的时候有一定的Swift 和iOS 开发基础,不过相信不论是新人还是富有经验的开发者,都能从本书中找到实用的信息和设计模式。


前   言

Core Data 是Apple 为iOS、OS X、watchOS 和tvOS 而设计的对象图管理(object graph management)和数据持久化框架。如果你的App 需要存储结构化的数据,那么Core Data 是一个显而易见的方案:它是现成的,Apple 仍然在积极地维护它,而且它已经存在超过10 年了。Core Data 是一个成熟、经过实践检验的代码库。

然而Core Data 最初会让人有一些困惑:它非常灵活,但是API 的最佳实践却并非显而易见。换句话说,本书的目标是帮助读者快速入门Core Data。我们希望提供给读者一系列包括从简单到高级的使用场景中的最佳实践,这样你可以充分利用Core Data 的能力而又不会迷失在一些不必要的复杂性中。

比如,Core Data 经常被诟病难以在多线程环境中使用。其实Core Data 的并发模型非常明确和一致。如果正确使用,那么它可以帮助你避免许多并发编程中一些固有的陷阱。其他的复杂性并不是由Core Data 引入的,它们的根源其实是并发本身。我们会在第9 章中对其进行深入研究,另外我们还会实际演示一个后台同步方案的例子。

除此之外,Core Data 也经常被吐槽性能糟糕。如果你像使用关系型数据库那样来使用CoreData,那么你会发现与直接使用类似SQLite 这样的数据库相比,Core Data 的性能开销会很高。但如果把Core Data 当成一个对象图管理系统来正确使用,那么得益于内建的缓存和对象管理机制,它在很多方面实际上反而更快。此外,抽象级别更高的API 可以让你专注于优化App 里关键部分的性能,而不是从头开始来实现如何持久化。在本书中,我们会介绍保持Core Data 高性能的最佳实践,并在专门讲性能以及性能分析的章节中探讨如何解决Core Data 的性能问题。

  • 本书使用Core Data 的方式

本书展示了如何在实际例子中使用Core Data,而不仅仅是简单地对API 手册进行一些扩展。我们有意专注于完整例子的最佳实践。根据我们的经验,正确地组合使用Core Data 的各个部分往往是最大的挑战。

此外,本书还深入解释了Core Data 内部的运作原理。了解Core Data 这个灵活框架可以帮助你做出正确的决定,同时能让你的代码保持简单易懂。特别是当遇到并发和性能问题时,这一点尤为重要。

  • 结构

在本书的第一部分,我们会创建一个简单版本的应用程序,来演示如何使用Core Data 以及Core Data 的基本工作原理。即使早期的示例对读者来说可能相当容易,但我们仍然建议读者浏览本书的这些部分,因为后面更复杂的例子是建立在前面介绍的最佳实践和技术基础之上的。我们还想告诉你的是,即便在简单的应用场景中,Core Data 也会非常有用。

第二部分则着重深入介绍Core Data 各个部分是如何一起协作的。我们会仔细探讨当以不同方式访问数据时会发生什么,我们也会对插入或者操作数据时发生的情况进行研究。这部分所覆盖的内容会比写一个简单的Core Data 应用程序所必要得多,这些方面的知识在处理更大或更复杂的情况时可以派上用场。在此基础上,我们将以性能方面的考量来对这个部分进行总结。

第三部分从描述一个用来保持本地数据与网络服务一致的通用同步架构开始,然后我们会深入探讨如何在Core Data 中同时使用多个托管对象上下文(managed object context)。我们提出设置Core Data 栈的不同方案,并讨论了它们的优缺点。在第9 章里,介绍了如何应对同时使用多个上下文带来的额外复杂性。

第四部分涉及一些高级的主题,比如高级的谓词(predicate)、搜索和文本排序、如何在不同的数据模型版本之间迁移数据,以及分析Core Data 栈的性能时所需要的工具和技术等。这部分中有一章是从Core Data 视角介绍有关关系数据库和SQL 查询语言的基本知识的。如果你不熟悉这些内容,那么这些章节能对你有所帮助,特别是可以让你理解Core Data 潜在的性能问题,以及解决这些问题所需要的分析技术。

  • 关于Swift 的一些说明

贯穿本书,我们所有的示例都使用Swift编写。我们拥抱Swift的语言特性——比如泛型、协议以及扩展——它们能让我们更优雅、简单、安全地使用Core Data 的API。

用Swift表示的最佳实践和设计模式同样也适用于Objective-C 的代码。在实现上,由于语言上的不同,或许在某些方面会稍有不同,但是底层的原则是相通的。


本书目录

I Core Data 基础1

第1 章初探Core Data 2

1.1 Core Data 架构2

1.2 数据建模4

1.3 设置Core Data 栈7

1.4 显示数据9

1.5 操作数据19

1.6 总结26

第2 章关系27

2.1 添加Country 和Continent 实体27

2.2 创建关系33

2.3 适配用户界面43

2.4 总结48

第3 章数据类型49

3.1 标准数据类型49

3.2 原始属性和临时属性51

3.3 自定义数据类型52

3.4 默认值和可选值59

3.5 总结60


II 理解Core Data 61

第4 章访问数据62

4.1 获取请求62

4.2 关系70

4.3 其他取回托管对象的方法71

4.4 内存考量72

4.5 总结74

第5 章更改和保存数据76

5.1 变更追踪76

5.2 保存更改78

5.3 批量更新82

5.4 总结84

第6 章性能86

6.1 Core Data 栈的性能特质86

6.2 避免获取请求89

6.3 优化获取请求96

6.4 插入和修改对象102

6.5 如何构建高效的数据模型103

6.6 字符串和文本106

6.7 独家秘诀的可调参数106

6.8 总结107


III 并行和同步109

第7 章与网络服务同步110

7.1 组织和设置110

7.2 同步架构112

7.3 上下文属主113

7.4 响应本地更改115

7.5 响应远程更改119

7.6 更改处理器119

7.7 删除本地对象123

7.8 分组和保存更改123

7.9 扩展同步架构125

第8 章使用多个上下文128

8.1 Core Data 和并发128

8.2 Core Data 栈134

8.3 总结144

第9 章使用多个上下文的问题146

9.1 保存冲突146

9.2 删除对象153

9.3 唯一性约束157

9.4 总结159


IV 进阶话题161

第10 章谓词162

10.1 一个简单的例子162

10.2 用代码来创建谓词164

10.3 格式字符串165

10.4 合并多个谓词168

10.5 遍历关系171

10.6 匹配对象和对象ID 172

10.7 匹配字符串173

10.8 可转换的值175

10.9 性能和排序表达式176

10.10 总结177

第11 章文本178

11.1 一些例子178

11.2 搜索179

11.3 排序183

11.4 总结189

第12 章数据模型版本以及迁移数据190

12.1 数据模型版本190

12.2 数据迁移的过程192

12.3 推断的映射模型201

12.4 自定义映射模型202

12.5 数据迁移和用户界面206

12.6 测试数据迁移209

12.7 总结210

第13 章性能分析212

13.1 SQL 调试输出212

13.2 Core Data Instruments 219

13.3 线程保护222

13.4 总结222

第14 章关系型数据库基础和SQL 223

14.1 一个嵌入式数据库223

14.2 数据表、列以及行224

14.3 数据库系统的结构225

14.4 数据库语言SQL 227

14.5 关系229

14.6 事务231

14.7 索引232

14.8 日志232

14.9 总结233

 

博文视点

您阅读的专业智库

喜欢请分享至朋友圈

了解更多本书详情请点击阅读原文

长按二维码轻松关注


点击阅读原文,即可快速抵达本书详情页!

 
博文视点Broadview 更多文章 今日好书丨《SRE:Google运维解密》 今日好书丨《通信之美》 今日好书丨《轻量级微服务架构(上册)》 Angular 2:Web技术发展的必然选择 今日好书丨《函数式Swift》
猜您喜欢 你才是自媒体!你们全家都是自媒体! 【叨叨】昨晚苹果发布会的不完全不负责任总结 Xcode 6 Beta 6发布闹乌龙,着重改进Swift语言 中国移动部署全球最大OpenStack集群的实践之路 Python基础教程10:continue 语句