2010-01-13 49 views
0

我有一個Web服務,它返回某些「模型」,其中的所有模型都由objective-c中的類定義。調用RESTful方法將返回單一模型XML或模型XML元素列表。iPhone中用於XML解析的模式

<widget> 
    <a>foo</a> 
</widget> 

<widgets> 
<widget> 
    <a>foo</a> 
</widget> 
    .... 
<widget> 
    <a>foo</a> 
</widget> 
</widgets> 

我試圖想出一個辦法來組織在解析對象的對象或列表這樣的方式我的課是容易的,最終增加更多的模型對象是簡單。它顯然會涉及每個「模型」的代表,但是您如何組織它以使其變得輕鬆優雅。每個模型對象的xml委託?如何處理列表?也許某種類型的列表委託對象,然後根據某個列表引用正確的單個模型委託對象? (即:小工具 - >小工具代表)

我將有一個類,它提供了web服務中的所有方法。

- (Widget *)getWidgetById: (int) id; 
- (some array) getWidgets:; 

我想它其實是更多的OO設計模式問題,然後是其他任何東西。

回答

1

如果我是你我強烈考慮讓服務器返回JSON或PLISTs。

這兩種格式的優點是,它們不像XML那樣開放式,所以你自然地把它們組織成數組,字典和各種類型的元素,這些元素自然映射回對象屬性,並且很容易解析(對於JSON,你需要像TouchJSON這樣的庫,對於plists你可以使用內置的解析)。你也不用擔心什麼時候做某個元素與某個屬性。

基本上,公式是這樣的:你從服務器獲得響應,在一次調用中將數據轉換爲NSDictionary或NSArray(通常是NSDictionaries數組),然後將屬性從數據模型中提取出來。

+0

感謝您的建議。似乎很少有工作,然後有解析器。我會檢查一下。好的是,我應該能夠通過使用HTTP Accepts頭來返回這兩種格式。可能是值得的。 – 2010-01-13 04:32:07