NSXmlparser的委托不起作用?

时间:2011-11-27 20:22:17

标签: iphone xml-parsing delegates nsxmlparser

XMLParser文件单独工作,但是当我把它放到我的项目中时,我没有遇到任何错误,但是我无法从URL中获取数据。我想,我的setDelegate不工作。我的xmlpar和打印功能正在工作,但其他人都没有工作。我不知道是什么事情?谁能帮帮我?

我的.h文件

    #import <UIKit/UIKit.h>

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

- &gt;我的.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
{
    durum=@"";

}


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

@end

1 个答案:

答案 0 :(得分:0)

这可能是一个疯狂的猜测,因为我没有使用NSXMLParser,但我认为它在后台线程中解析。这意味着它可能还没有完成解析,你已经调用了一个方法来打印arr的内容。

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

尝试在解析完成时调用的委托方法中调用print方法,如果存在的话。

修改

查看文档后,尝试在parserDidEndDocument方法

中调用print
- (void)parserDidEndDocument:(NSXMLParser *)parser{
    [self print];
}