[Three20] Three20的擴充模組

在前兩篇介紹Three20模組架構的文章中,各位讀者應該已經對於Three20的各個模組有大致的了解,在這篇文章中我們將看看Three20的擴充模組,也就是JSON/XML的framework。
評論
評論

在前兩篇介紹 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:

  • ___Entity_Name___ -- 名稱,透過 [parser nameForXMLNode] 可以取得
  • ___Entity_Type___ -- 類型,透過 [parser typeForXMLNode] 可以取得
  • ___Entity_Value___ --  包含的值,透過 [parser objectForXMLNode] 可以取得

而若是取得的值也是多個 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,請各位讀者多多指教!



精選熱門好工作

資深產品經理 (PM, PO)

VeryBuy非常勸敗
臺北市.台灣

獎勵 NT$15,000

產品企劃

皇博數位有限公司
高雄市.台灣

獎勵 NT$15,000

客服⼯程師

萬欣網路科技有限公司
臺北市.台灣

獎勵 NT$15,000