0

我有一个 Web 服务,它返回某些“模型”,这些“模型”都是由objective-c 中的一个类定义的。对 RESTful 方法的调用将返回单个模型 XML 或模型 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:;

我想它实际上更像是一个面向对象设计模式的问题,而不是其他任何问题。

4

2 回答 2

1

您可能希望从查看XMLPerformance Apple 示例代码开始。您可以选择使用NSXMLParseror libxml,或者只是推出您自己的解决方案。另请参阅Data Management Coding How-To 的XML解析部分

于 2010-01-13T02:54:05.827 回答
1

如果我是你,我会强烈考虑让服务器返回 JSON 或 PLIST。

这两种格式的优点是,它们不像 XML 那样开放,因此您可以自然地将事物构造成数组、字典和各种类型的元素,这些元素自然地映射回对象属性并且非常容易解析(对于 JSON,您需要TouchJSON 之类的库,对于 plist,您可以使用内置解析)。您也不必担心何时将某物制作为元素与属性。

基本上公式是这样的:您从服务器获得响应,在一次调用中将数据转换为 NSDictionary 或 NSArray(通常是 NSDictionaries 数组),然后从它们中提取属性到您的数据模型中。

于 2010-01-13T03:49:22.750 回答