是否有一种简单的方法来处理iPhone开发人员的Web服务?

时间:2008-12-30 13:57:06

标签: iphone xml

我们想要获取XML数据并将其转换为NSDictionary对象,但我们不希望手动迭代XML。是否有捷径可寻?你是如何为你的iPhone应用程序做网络服务的?

3 个答案:

答案 0 :(得分:3)

如果您可以控制服务器输出,请尝试使用plist。否则,您将无法解析XML(如果服务器可以执行此操作,则会使用JSON),但您可以使用框架。请参阅this question的答案。

此外,这里有一个很好的概述如何在iPhone上做RESTful客户端:

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

答案 1 :(得分:3)

如果您可以控制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来存储数据,因为它为您提供了测试应用程序的可靠性,而不是字典。

答案 2 :(得分:0)

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

还有另一个名为NSPropertyListSerialization的类可以从数据中获取字典。

您可以使用收到的数据执行此类操作

NSDictionary * propertyList;
NSPropertyListFormat格式;
NSString * errorStr;

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

抱歉,不知道这里使用了哪些标签来格式化代码!