您好朋友,我想问一下如何返回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];
}
答案 0 :(得分:2)
确保您的委托还实现了NSXMLParserDelegate协议。然后你可以调用didStartElement,didEndElement,didEndDocument等。
我通常会创建一个NSArray(或NSMutableArray),然后使用上面提到的NSXMLParser方法填充您在webdata中检索的类型的对象。将此数组用作UITableView的cellForRowAtIndexPath中的数据源。
当你到达didEndDocument时,只需调用[myUITableView reload]来更新表视图。 (除非tableview和连接委托在两个不同的类中,否则你应该使用KVO让tableviewdelegate知道已检索到的数据)。
关注:
而不是只是给你一个例子(其中已有几个在网上),这将给你留下更多的问题,我将试着解释一下,如果你要去,你应该理解什么成为一名成功的iOS开发者。
如果以下步骤对您来说太令人生畏,我建议您退后一步,尝试一次缓慢地解决问题。如果你还没有取得进展,那就去购买Mark,Nutting和LaMarche的Beginning iPhone 4开发版,然后在你更好地理解Objective-C和iPhone编程的基础过程时再回过头来看看。
实现目标:
首先,你应该问问自己你想要完成什么。
您是从网站(也许是网络服务?)获取数据,并且您想要解码(解析)该信息并将其显示在tableview中。正确的吗?
因此,要解决您的问题,您必须分解问题,并确保您了解如何完成任务的每个部分。
根据您要从您的网站收到的数据类型创建一个单独的类。如果要获取指定颜色,年份,模型的汽车对象,则应创建一个具有颜色,年份和模型属性的汽车类。
从网站获取数据。您似乎已经知道如何执行此操作,因为您已经在上面显示的代码中捕获了连接事件。但是,您是否了解ConnectionDidFinishLoading中发生了什么?
解析从网站返回的数据。这需要使用XML解析器,你似乎至少知道你需要在这里做一些事情来解析数据。它还需要一个位置来存储从网站返回的数据。您在步骤1中创建的类型的对象数组将是返回和解析数据的存储区域。最后,它要求您了解从网站传递给您的数据的细节,以便您了解如何解析数据并正确存储(并且它实际上是XML格式,否则XMLparsing将无法在此处工作)
在UITableView中显示已解析的数据。这要求您了解如何在tableview中显示数据以及如何为tableview设置数据源。
其次,你应该寻找你可以学习的样本代码来完成你想要完成的任务,并阅读Apple的文档,以便牢牢掌握创建所需结果的必要条件。查看任务的每个部分以及任何不清楚的地方,研究具体问题。我如何使用NSXMLParser?如何在阵列中显示UITableView中的数据?等
如果你没有花时间真正理解如何解决这个问题,而不仅仅是复制代码,那么你明天就会有另一个问题。
希望这有助于您解决此问题,并帮助您了解如何解决未来的问题。
为了让你开始,我会给你一个或多或少回答你问题的链接。