有没有一种简单的方法来处理iPhone开发的Web服务?

问题描述:

我们希望获取XML数据并将其转换为NSDictionary对象,但我们不想手动迭代XML。是否有捷径可寻?你如何为你的iPhone应用程序做Web服务?有没有一种简单的方法来处理iPhone开发的Web服务?

如果你有过XML输出,你可以尝试创建一个属性列表,然后您可以读取控制使用-dictionaryWithContentsOfURL:(尽管更好的异步方式是使用NSURLConnection获取数据,然后使用NSString上的-propertyList方法转换数据)。你可以找到更多关于属性列表在这里:http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/Introduction/chapter_1_section_1.html

当然,最好的解决方法是使用一个RESTful客户端,并使用NSURLConnection的组合来接收/发送数据和TouchXML类(http://code.google.com/p/touchcode/wiki/TouchXML)分析数据,但这需要更多的工作来将数据放入字典中。当然,如果这些将成为系统中的主要数据对象,那么您真的想要使用自定义类或SQLite来存储数据,因为它为测试应用程序提供了比字典更可靠的性能。

+0

我同意RESTful方法是最好的,但您仍然更好使用plist而不是TouchXML来处理来自服务器的传入数据。使用REST不排除使用plist格式发送数据... – 2008-12-30 23:07:36

如果您可以控制服务器输出,请尝试使用plists。否则,你一直在解析XML(或者如果服务器可以这样做,则为JSON),但是你可以使用框架。请参阅this question的答案。

而且,这里是如何做REST风格的客户在iPhone上很好的概述:

http://developer.apple.com/webapps/articles/creatingrestfulclients.html

您可以返回JSON格式的数据。有许多开源的JSON解析器可用于iPhone(TouchJSON就是其中之一)。

还有另一个类叫做NSPropertyListSerialization,它可以从数据中获取字典。

你可以做这样的事情与你收到

的NSDictionary *对propertyList的数据;
NSPropertyListFormat格式;
NSString * errorStr;

对propertyList = [NSPropertyListSerialization
propertyListFromData:receivedData
mutabilityOption:NSPropertyListImmutable
格式:&格式
ERRORDESCRIPTION:& errorStr];

对不起,不知道这里用什么标签来格式化代码!