2010-01-13 95 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