2012-01-24 9 views
0

私は彼らが失敗したら、より多くのを使用していますが、エラー・コードに再利用の障害が、エラーなしのコードを解析NSXMLParser

初期を返さないとき、私は私が最初にそれらを使用する4 NSXMLParser objects.they作業罰金を持っていますが、

-(void)initParsers 
{ 
    NSURL* file_url = nil; 
     FOR(i,4){  

    file_url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"stack%d",0]ofType:@"xml" inDirectory:@"stackXmls"]]; 
    stackXmlParser[i] = [[NSXMLParser alloc] initWithContentsOfURL:file_url]; 
    stackXmlParser[i].delegate = self; 
    } 

} 

解析

BOOL success = [stackXmlParser[currentStack] parse]; 
if (success) 
{ 
    //Do XML stuff 
    ...   
} else { 
NSLog(@"Error Error Error!!!"); 
    NSError *error = [stackXmlParser[currentStack] parserError]; 
    NSLog(@"Errors with xmlParser: %@ %d", [error localizedDescription], error.code); 
} 

OUTPUT

2012-01-24 16:03:29.542 Cards[5168:207] Error Error Error!!! 
2012-01-24 16:03:29.543 Cards[5168:207] Errors with xmlParser: (null) 0 
+0

それが間にリリースされます任意のチャンスは? (これがばかげていると申し訳ありません) – zrxq

+0

nopeグローバルオブジェクトがリリースされています - (void)コントローラのdealloc – Yadnesh

+0

さて、どのようにパーサーを作成しますか? – zrxq

答えて

1

代わりinitWithContentsOfURL

のinitWithDataを使用してみてください
NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToXMLFile]]; 
NSLog(@"initWithContentsOfURL 1: %s", ([parser parse])?"OK":"Fail"); 
NSLog(@"initWithContentsOfURL 2: %s", ([parser parse])?"OK":"Fail"); 
parser = [[NSXMLParser alloc]initWithData:[NSData dataWithContentsOfFile:pathToXMLFile]]; 
NSLog(@"initWithData 1: %s", ([parser parse])?"OK":"Fail"); 
NSLog(@"initWithData 2: %s", ([parser parse])?"OK":"Fail"); 

出力

2012-01-24 18:37:31.260 CLIXMPLParser[12658:707] initWithContentsOfURL 1: OK 
2012-01-24 18:37:31.280 CLIXMPLParser[12658:707] initWithContentsOfURL 2: Fail 
2012-01-24 18:37:31.292 CLIXMPLParser[12658:707] initWithData 1: OK 
2012-01-24 18:37:31.297 CLIXMPLParser[12658:707] initWithData 2: OK 
関連する問題