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