好的,所以我在做一些 NSXMLParsing 时遇到了一些问题。解析器单独工作正常,但是当我尝试在后台异步运行它们时,只有其中一个会指示它已完成对文档的解析。
为了解释我的整个过程,它如下
- 我在后台使用多个 NSURLConnections 和 NSURLRequests 加载 2 个网页,以免阻塞用户界面
- 然后,我获取该数据并将其传递给 xml 解析器。
- 每个网页都有一个单独的 XML 解析器,每个都有自己的引用和分配给它的内存。
- 然后我像往常一样运行解析器,它会查找我指出的特定标签,yadda yadda,这些东西都工作正常。
- 当我让解析器指示它们已完成时,问题就出现了,我使用该
parserDidEndDocument:(NSXMLParser *)parser
方法检查文档是否已完成。不幸的是,这个方法只被调用一次,所以我不知道两个解析器是否都完成了。
我的代码是这样的:
连接完成时
-(void) connectionDidFinishLoading:(NSURLConnection *)connection {
if (connection == actConnection) {
[self processSynopsis]; // initiate synopsis parser
} else if (connection == castConnection) {
[self processCast]; // initiate cast parser
}
}
分配和启动概要解析器
-(void) processSynopsis {
actParser = [[NSXMLParser alloc] initWithData:actData];
[actParser setDelegate:self];
[actParser parse];
}
分配和启动强制转换解析器
-(void) processCast {
castParser = [[NSXMLParser alloc] initWithData:castData];
[castParser setDelegate:self];
[castParser parse];
}
检查解析器是否终止
-(void) parserDidEndDocument:(NSXMLParser *)parser {
if (parser == actParser) {
NSLog(@"ended act %@",parser);
} else if (parser == castParser) {
NSLog(@"ended cast %@",parser);
}
}
由于某种原因,该parserDidEndDocument
方法只会被调用一次。任何人都看到任何错误或以前遇到过这个问题。提前感谢您的帮助!