iBooks 数据库设计分析

很久以前还吐槽过 iBooks 的数据库表设计特别鬼畜,实际上后来我发现我错了。为什么错了呢?但是我为了研究如何自定义 iBooks 丛书集的时候[1],用 SQLite 的方式打开的数据库文件,导致我看到了一堆大写字母拼写成的数据项名字。而实际上正确的打开方式是用 Xcode 的 Core Data 组件打开。

获取数据库 Schema

我们可以通过「显示包内容」的方式进入到 iBooks 软件的内部文件夹,查找拿到编译过的数据库 Schema 文件(.mom)。或者直接在命令行输入 cd /Applications/iBooks.app/Contents

Compiled Core Data Model

或者也可以使用 Core Data Editor[2] 这个软件来找我们需要的数据库表设定信息。

然后新建一个 Xcode 工程项目,再工程里面导入这些文件。

Import Core Data model

最后就可以还原得到原始的 Core Data 数据库数据项设定了。

Core Data Schema

之后就可以通过程序来读写 iBooks 的数据库了。

数据库数据项

'\0'

图中的 iBooks Helper 项目是我计划做的一个 iBooks 辅助软件。为 iBooks 扩展一些功能,比如根据 epub 内部 metadata 提供的信息自动分组丛书集,以及更多的功能。

但是由于最近忙着课程和实习应聘,展示搁置,如果看到这篇文章对这个东西感兴趣的朋友,可以联系我一起讨论更多细节。

(未完成)


  1. iBooks 自定义丛书集 https://blog.windisco.com/ibooks-custom-series/ ↩︎

  2. Core Data Editor 软件下载地址 https://github.com/ChristianKienle/Core-Data-Editor ↩︎