2011-12-27 74 views
2

我已經完成了一個NSXML解析器,但由於某種原因,這次我調用parse時我的NSXMLParserDelegate方法未被調用。NSXMLParserDelegate方法不被調用

這裏就是我稱之爲解析:

- (void)parseXMLFile:(NSString *)pathToFile 
{ 
    NSURL* xmlURL = [NSURL fileURLWithPath:pathToFile]; 
    _parser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; 
    [_parser setDelegate:self]; 
    [_parser parse]; 
} 

這裏是我的委託方法:

#pragma mark NSXMLParserDelegate Methods 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 
{ 
    if ([elementName isEqualToString:@"section"]) 
    { 
     _currentSection = [[Section alloc] init]; 
     _currentSection.name = [attributeDict valueForKey:@"title"]; 
    } 
} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if([elementName isEqualToString:@"section"]) 
    { 
     [_sections addObject:_currentSection]; 
     [_currentSection release]; 
    } 
} 

這是我的頭:

@interface Engine : NSObject <NSCoding, NSXMLParserDelegate> 

我的XML文件是項目的一部分,所以我不知道爲什麼委託方法不會被調用。有任何想法嗎?

+2

你怎麼知道他們沒有被叫?你是否有日誌記錄代碼,你沒有發佈或使用斷點? – 2011-12-27 20:48:45

+0

我已經使用了斷點和日誌。我拿出了所有的日誌代碼。 – Thorax 2011-12-27 20:53:46

+0

你確定'_parser'不是零嗎? – 2011-12-27 20:55:11

回答

1

這是我的路徑名。我將parseXMLFile更改爲:

- (void)parseXMLFile:(NSString *)pathToFile 
{ 
    NSString * filename = [pathToFile stringByDeletingPathExtension]; 
    NSString * extension = [pathToFile pathExtension]; 

    // Get file contents 
    NSData * data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:filename ofType:extension]]; 
    _parser = [[NSXMLParser alloc] initWithData:data]; 

    [_parser setDelegate:self]; 
    [_parser parse]; 
}