(写在前面:不要转载,不要转载,不要转载...因为我不会写)
太久不写代码了,手,实在是痒!
其实呢,不写代码也行...可尼玛别让我一直写文档!
所以!必须要看看书才能隔靴搔痒!
有个iPad,怎么能不好好利用呢。那就用iPad看看DocSets吧。
现在貌似在app store上的DocSets工具没有免费的吧,反正我好久之前想找一个免费的DocSets阅读软件,但是都是收费的。
所以就折腾了一下,看看这个DocSets文件到底是个什么鬼玩意儿。
哎...老毛病又犯了...看到一点感兴趣的东西就被吸引过去了。
1.DocSets是什么.
墙的后面可以看下官网的解释:Dash官网上的DocSet规范
DocSets 显示内容之后,可以看到,三个玩意儿。
1.info.plist
主要包含一些当前这个DocSets的基本信息。
苹果的xCode离线文档,很明显要比常规的DocSets的info要多很多。大家xCode打开看一下大概也知道是个什么东东。
2.version.plist
和Info.plist差不多,略过
3.Resources文件夹
这里才是重点。
docSet.dsidx这里包含了内容的索引。
先看看官方的DocSet的dsidx文件的内部。
这样的。
就一数据库,够简单了吧。
name字段就是显示在Dash中的标题,type字段用于用于表明这一项的类型,而path字段就是对应的html文件路径。
但是,其实,不然...
苹果的东西哪里能让你们辣么简单的就看透,要不然还怎么做大哥大。
其实,苹果的离线文档的dsidx里面是这样的:
喏...
这里的索引很给力呀,慢慢看关系吧。
这里研究里面索引的关系,咱说说怎么读里面的内容。
在MacOS里面,可以建立sqlite3对象,用sqlite3_open_v2来获取这个数据库。接着可以用sqlite3_prepare_v2来之星SQL语句读取里面的表数据。
在iOS里面呢,可以使用core data来读取,怎么读取呢...这里有点小梗。这得说到另外一个文件:docSet.mom
用mom文件作NSManagedObjectModel对象来初始化一个NSPersistentStoreCoordinator对象,然后用NSPersistentStoreCoordinator对象调用addPersistentStoreWithType来读取数据。
不过呢,还没完...这里要自己做Root ,Tree,Node,才能做树形列表。
并且!还没完!
iOS8的DocSets 和 iOS的DocSets也不一样了!妈蛋的!
先工作了,iOS9的DocSets有什么不一样,我还没弄清楚。水平有限,暂时先这样了。
PS:TextWrangler竟然可以打开DocSets看里面的文件呢.有点小惊讶.请原谅我的无知。