您好朋友,我想问一下如何返回Conn.xmlParser
因为connectionDidFinishLoading为空,并且我需要此结果才能在UITableView中进行解析,才能使用Conn.mlParser的值?
请帮忙。
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"DONE. Received Bytes: %d", [Conn.webData length]);
ta=Conn.webData;
if( Conn.xmlParser )
{
[Conn.xmlParser release];
}
Conn.xmlParser = [[NSXMLParser alloc] initWithData: Conn.webData];
[Conn.xmlParser setDelegate: self];
[Conn.xmlParser setShouldResolveExternalEntities: YES];
[Conn.xmlParser parse];
[connection release];
[Conn.webData release];
}
最佳答案
确保您的委托还实现了NSXMLParserDelegate协议。然后,您可以调用didStartElement,didEndElement,didEndDocument等。
我通常创建一个NSArray(或NSMutableArray),然后使用上面提到的NSXMLParser方法将这些对象填充到您在Web数据中检索的类型的对象。也将此数组用作UITableView的cellForRowAtIndexPath中的数据源。
当您到达didEndDocument时,只需调用[myUITableView reload]即可更新表视图。 (除非tableview和连接委托处于两个不同的类中,否则,您应该使用KVO使tableviewdelegate知道已检索到数据)。
跟进:
相反,仅举一个例子(网络上已经有几个例子),这将给您留下更多的问题,我将尝试解释如果您打算成为一个例子,您应该理解什么。成功的iOS开发人员。
而且,如果以下步骤对您来说似乎太艰巨,我建议您退后一步,尝试一次缓慢地解决问题。如果您仍然没有取得进展,那么可以购买Mark,Nutting和LaMarche编写的Beginning iPhone 4 Development的副本,然后在更好地了解Objective-C和iPhone编程的基本过程之后再来阅读。
要实现您的目标:
首先,您应该问自己要完成的工作。
您正在从网站(也许是Web服务?)获取数据,并且想要解码(解析)该信息并将其显示在表格视图中。正确?
因此,要解决您的问题,您必须分解问题,并确保您了解如何完成任务的每个部分。
创建一个单独的类,以要从网站上接收的数据类型为模型。如果要获取指定颜色,年份,模型的汽车对象,则应创建具有颜色,年份和模型属性的Car类。
从网站获取数据。您似乎已经知道如何执行此操作,因为您已经在上面显示的代码中捕获了连接事件。但是,您了解ConnectionDidFinishLoading中发生了什么吗?
解析从网站返回的数据。这需要使用XML解析器,同样,您似乎至少知道您需要在此处执行某些操作来解析数据。它还需要一个位置来存储从网站返回的数据。您在步骤1中创建的类型的对象数组将是返回和解析数据的存储区域。最后,它要求您了解从网站传递给您的数据的详细信息,以便您了解如何解析数据并正确地存储它(并且它实际上是XML格式的,否则XMLparsing将无法在此处使用) 。
在您的UITableView中显示已解析的数据。这需要您了解如何在表视图中显示数据以及如何为表视图设置数据源。
其次,您应该寻找可以学习以完成您想要完成的工作的示例代码,并阅读Apple的文档,以牢牢掌握为实现所需结果而必须采取的措施。查看任务的每个部分,如果有任何不清楚之处,请研究该特定问题。如何使用NSXMLParser?如何在数组中的UITableView中显示数据?等等
如果您不花时间真正地了解如何解决此问题,而只是复制代码,那么明天您还会遇到另一个问题。
希望这将帮助您解决此问题并帮助您了解如何解决将来的问题。
为了让您入门,我将为您提供一个或多或少回答您问题的链接。
iPhone Tutorial Creating an RSS feed Reader