2011-12-27 14 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

に変更しました。どのように呼び出されていないのですか?投稿しなかったコードやブレークポイントを使用していますか? –

+0

私はブレークポイントとロギングの両方を使用しました。私はすべてのロギングコードを取り出しました。 – Thorax

+0

'_parser'がnilではないと確信していますか? –

答えて

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]; 
} 
関連する問題