-1

我使用 NSXML 解析器来解析我从 Web 服务收到的 SOAP 响应 XML。在我的根方法中,

 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 语句之前没有结束,因此我无法返回解析的值。我该如何解决这个问题?

4

2 回答 2

2

NSXMLParser完全同步工作。返回时[_xmlParser parse],所有解析都已完成(或因错误而中止)。

于 2013-09-03T17:42:30.373 回答
0

根据你的描述,问题不是很清楚。看来,问题在于——在构建根元素之后——你继续处理你的程序,同时仍然在 NSXMLParser 的 parse 方法中。

为了解决这个问题,只需在主线程上调用一个选择器,将解析器的委托结果(根元素)传递给最终处理它的方法。或者,将 dispatch_async 用于主线程,在其中调用处理根元素的方法。

于 2013-09-05T07:12:44.790 回答