Search code examples
iphoneiosobjective-cnsxmlparserparsexml

How to wait for NSXMLParser to complete in iOS


I want to wait for NSXMLParser process to complete and then continue with other processes. I use NSXMLParser to parse XML data.

This is my code:

 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
   NSLog(@"Did start element");
   if ( [elementName isEqualToString:@"FILENAME"])
   {
       XML_FIELD = FILENAME_CLOUD2;
       NSLog(@"found rootElement");
       return;
   }
   else if ( [elementName isEqualToString:@"UPLOADTIME"])
   {
       NSLog(@"found rootElement");
       XML_FIELD = UPLOADTIME2;
       return;
   }

}

didEndElement():

 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
   NSLog(@"Did end element");
   if ([elementName isEqualToString:@"FILENAME"])
   {
      NSLog(@"rootelement end");
   }
   XML_FIELD = UNIMPORTANT2;
}

foudCharaters():

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
   if (XML_FIELD == FILENAME_CLOUD2)
   {
      NSLog(@"Value %@",string);
      [FileCompletedArray insertObject:string atIndex:0];
   }
   else if (XML_FIELD == UPLOADTIME2)
   {
      NSLog(@"Value %@",string);
      [UploadTimeArray insertObject:string atIndex:0];
   }
}

Above code is used to get data from NSXMLParser but my app needs to wait for the parse xml process to complete. Can I use dispatch () ?


Solution

  • NSXMLParser works completely synchronous. When the parse method returns the parsing is finished (or has failed with an error). So there is no need to "wait" for it to complete.