代码之家  ›  专栏  ›  技术社区  ›  sadmicrowave

Objective-C“RootViewController”可能没有响应“-parseXMLFileAtURL:”xCode中的错误

  •  1
  • sadmicrowave  · 技术社区  · 14 年前

    在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 命令让人心痛吗?

    更新* *

    解析xmlfileatrol 在同一个文件中;但是,我将该段代码放在 viewDidAppear 方法(我的错)。所以当我改变方法的顺序,错误就会消失。但当我这样做的时候,我又犯了一个错误,也许你们也能帮我解决这个错误!这里是:

    等级 rootview控制器 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 回复  |  直到 12 年前
        1
  •  2
  •   Atulkumar V. Jain    12 年前

    关于你的第二个问题 RootViewController 不符合 NSXMLParserDelegate 协议。就这样把它加到你的 RootViewController.h 文件:

    @interface  RootViewController : UIViewController <NSXMLParserDelegate> { .....
    
        2
  •  1
  •   Atulkumar V. Jain    12 年前

    愚蠢的问题:你的 RootViewcontroller -parseXMLFileAtURL: 定义?如果 -分析XML文件: 在调用它的方法之后,还需要在头中声明它。

        3
  •  0
  •   Atulkumar V. Jain    12 年前

    确保你有 parseXMLFileAtURL RootViewController.m

    -(void)parseXMLFileAtURL:(NSString *)url
    {   
        ... 
    }
    

    并确保在标题中定义为:

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

    另外,确保当您试图从web上获取内容时,使用的是 NSURL ,不是 NSString

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