NSXmlparser的委托不起作用?
问题描述:
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
答
,因为我没有使用过NSXMLParser
但我认为它解析的,这可能是胡乱猜测后台线程。这意味着它可能还没有完成解析,并且您已经调用了打印arr
的内容的方法。
-(void)xmlpar{
//..
[pars parse];
[self print];
}
尝试调用解析完成时调用的委托方法print
方法,如果这样的存在。
编辑
通过文档细算尝试parserDidEndDocument
方法调用打印
- (void)parserDidEndDocument:(NSXMLParser *)parser{
[self print];
}
我试图this.but它仍然是行不通的。我的函数(didStartElement,didEndElement,foundCharacters)不工作。我的proplem是setdelegate? – muhammedkasva