Three20Three20的扩充模组


2020-06-09


在前两篇介绍 Three20 模组架构的文章中,各位读者应该已经对于 Three20 的各个模组有大致的了解,在这篇文章中我们将看看 Three20 的扩充模组,也就是 JSON/XML 的 framework。

模组相依性

如同 Three20 本身的模组,扩充模组也有一些相依的模组,如下图:

   -------------   ------------   |  extJSON  |   |  extXML  |   -------------   ------------   ----------------------------   |          Network         |   ----------------------------   |           Core           |   ----------------------------

这些以 ext 开头的模组便是这次所要谈额外的扩充模组。

extThree20XML

extThree20XML 提供了一个方便的介面让开发者们能够进行 XML 的解析,而负责的类别正是 TTXMLParser,相比于 NSXMLParser 繁琐的 delegate 方法呼叫,TTXMLParser 则只需如下的程式码便可以进行解析:

TTXMLParser* parser = [[TTXMLParser alloc] initWithData:xmlData]; [parser parse];

经过解析之后,parser.rootObject 就会是一个包含 XML root node 资讯的 NSDictionary,里面会有以下 key/value:

而若是取得的值也是多个 XML Node,则会包装成 NSArray。

要注意的是,根据 Three20 文件记载,这个 TTXMLParser 并没有针对记忆体、效率进行优化,所测试过的 XML 文件都为 1MB 以下,若是读者有需要解析档案较大的 XML 文件则需多多注意。

extThree20JSON

而 extThree20JSON 自然是处理 JSON 物件的类别了,相对于 TTXMLParser,extThree20JSON 并没有提供自己的 JSON Parser,而是引入了笔者以前曾经撰文提到过的 json-framework 及 YAJL.framework。

上述的这两套 framework 所负责的都是 JSON 的解析,我们只需要选择一套来使用即可,透过 Build Target 的指定,我们便可以选择其中一套作为使用。

TTURLXMLResponse & TTURLJSONResponse

除了上面提到的 Parser 之外,extThree20XML 和 extThree20JSON 另外分别提供了两种不同的 TTURLResponse 子类别。

在 TTURLRequest 中,我们可以将 response 设定为这两种类别,而当 Three20 将网路上的资讯下载回来时,便会呼叫 TTURLJSONResponse 或是 TTURLXMLResponse 的解析方法进行处理、验证,省去自行呼叫方法的时间。

结论

在这篇文章中我们看了 JSON、XML 此两个 Three20 所提供的外挂模组,特别是在网路相关的应用程式中频繁的会使用到。在下一篇文章中,我们将深入探索 Three20 的 URL-based Navigation,请各位读者多多指教!



上一篇:
下一篇: