在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];
- 可能出现什么问题?
答案 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://..."];