Objective-C'RootViewController'可能无法响应xCode中的'-parseXMLFileAtURL:'错误

时间:2010-10-26 17:47:08

标签: objective-c cocoa xml-parsing

在xCode中构建和运行项目时出现此错误: RootViewController可能无法回复-parseXMLFileAtURL: 我正在尝试从教程中开发基本的Apple RSS阅读器:

http://gigaom.com/apple/tutorial-build-a-simple-rss-reader-for-iphone/

我发现此错误的代码部分如下所示:

- (void)viewDidAppear:(BOOL)animated
{ 
    [super viewDidAppear:animated]; 
    if ([stories count] == 0)
    {
         NSString * path = @"http://feeds.feedburner.com/TheAppleBlog"; 
         [self parseXMLFileAtURL:path]; 
    }
    cellSize = CGSizeMake([newsTable bounds].size.width, 60); 
}

任何人都能解释为什么这个parseXMLFileAtURL命令会让人心痛吗?

由于

修订* * *

我还在同一个文件中定义parseXMLFileAtURL;但是,我在viewDidAppear方法之后放置了代码的那部分(我的坏)。所以当我改变错误消失的方法的顺序时。但是当我这样做时,我又得到了另一个错误,也许你们也可以帮助解决这个错误!这是:

RootViewController未实现NSXMLParserDelegate协议

这段代码:

- (void)parseXMLFileAtURL:(NSString *)URL
{
    stories = [[NSMutableArray alloc] init]; 
    NSURL *xmlURL = [NSURL URLWithString:URL]; 
    rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; 
    [rssParser setDelegate:self];
    [rssParser setShouldProcessNamespaces:NO]; 
    [rssParser setShouldReportNamespacePrefixes:NO]; 
    [rssParser setShouldResolveExternalEntities:NO]; 
    [rssParser parse];
}

错误发生在以下行:[rssParser setDelegate:self]; - 可能出现什么问题?

3 个答案:

答案 0 :(得分:2)

关于RootViewController不符合NSXMLParserDelegate协议的第二个问题。只需在RootViewController.h文件中添加:

@interface  RootViewController : UIViewController <NSXMLParserDelegate> { .....

答案 1 :(得分:1)

愚蠢的问题:您的RootViewcontroller类是否定义了名为-parseXMLFileAtURL:的方法?如果-parseXMLFileAtURL:位于调用它的方法之后,您还需要在标题中声明它。

答案 2 :(得分:0)

确保parseXMLFileAtURL

中定义了RootViewController.m
-(void)parseXMLFileAtURL:(NSString *)url
{   
    ... 
}

并确保在标题中将其定义为:

-(void)parseXMLFileAtURL:(NSString *)url;

此外,请确保当您尝试从网络上获取内容时,您使用的是NSURL,而不是NSString。您可以通过以下方式实例化带有字符串的NSURL:

NSURL *urlFromString = [[NSURL alloc] initWithString:@"http://..."];