我使用NSXML解析器来解析从Web服务收到的SOAP响应XML。 在我的root方法中,
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
我使用此代码发送我的SOAP请求,其中theRequest变量具有我的SOAP请求。 所以收到数据后,
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
//codes to recieve webData
xmlParser = [[NSXMLParser alloc] initWithData: _webData];
[_xmlParser setDelegate: self];
[_xmlParser setShouldResolveExternalEntities: YES];
[_xmlParser parse];
}
现在,程序流向didStartElement,didFinishDocument方法。我的root方法需要返回解析xml后得到的结果,但是当我使用断点检查程序流时,解析方法不会在我的代码中调用return语句之前结束,因此我无法返回解析后的值。我该如何解决这个问题?
答案 0 :(得分:2)
NSXMLParser
完全同步。当[_xmlParser parse]
返回时,所有解析都已完成(或因错误而中止)。
答案 1 :(得分:0)
根据你的描述,问题不是很清楚。似乎问题是,在构造了根元素之后 - 你继续处理你的程序,同时仍然在NSXMLParser的解析方法中。
要解决此问题,只需在主线程上调用一个选择器,将选择器的委托结果(根元素)传递给最终处理它的方法。或者,使用dispatch_async到主线程,在那里调用处理根元素的方法。