문제

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 () ?

도움이 되었습니까?

해결책

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.

다른 팁

Its very simple..

NSXMLParser *parser=[[NSXMLParser alloc] initWithData:data];
parser.delegate=self;

if([parser parse]){
   NSLog(@"Parsing Finished");
}else{
   NSLog(@"Parsing Failed");
}

Parser will call delegate function

- (void)parserDidStartDocument:(NSXMLParser *)parser{
     NSLog(@"Parsing started");
}

when the function parse is called..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top