2011-11-27 59 views
0

XMLParser文件單獨工作,但是當我把它放到我的項目中時,我不會遇到任何錯誤,但我無法從URL中獲取數據。我想,我的setDelegate不工作。我的xmlpar和打印功能正在工作,但其他人不工作。我不知道是什麼事情?任何人都可以幫助我?NSXmlparser的委託不起作用?

我.h文件中

#import <UIKit/UIKit.h> 

@interface TestttxmlViewController : UIViewController <NSXMLParserDelegate>{ 
    NSXMLParser * pars; 
    NSString * durum; 
    NSMutableArray *arr; 
} 
-(void)print; 
-(void)xmlpar; 
@end 

- >我的.m文件

#import "TestttxmlViewController.h" 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self xmlpar]; 
} 


-(void)xmlpar{ 
    arr=[[NSMutableArray alloc]init]; 
    NSURL * url =[[NSURL alloc]initWithString:@"http://www.milliyet.com.tr/D/rss/rss/Rss_36.xml"]; 
    pars=[[NSXMLParser alloc]initWithContentsOfURL:url]; 
    durum=[[NSString alloc]init]; 
    [pars setDelegate:self]; 
    [pars parse]; 
    [self print]; 
} 
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 
    if ([elementName isEqualToString:@"title"]) { 
     durum=elementName; 
    } 
} 
-(void)print{ 
    NSLog(@"%@",arr); 
} 

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    [email protected]""; 

} 


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    if ([durum isEqualToString:@"title"]) { 
     [arr addObject:string]; 
    } 
    } 

@end 

回答

0

,因爲我沒有使用過NSXMLParser但我認爲它解析的,這可能是胡亂猜測後臺線程。這意味着它可能還沒有完成解析,並且您已經調用了打印arr的內容的方法。

-(void)xmlpar{ 
    //.. 
    [pars parse]; 
    [self print]; 
} 

嘗試調用解析完成時調用的委託方法print方法,如果這樣的存在。

編輯

通過文檔細算嘗試parserDidEndDocument方法調用打印

- (void)parserDidEndDocument:(NSXMLParser *)parser{ 
    [self print]; 
} 
+0

我試圖this.but它仍然是行不通的。我的函數(didStartElement,didEndElement,foundCharacters)不工作。我的proplem是setdelegate? – muhammedkasva