使用NSXMLParserDelegate构建项目时出错

时间:2010-03-23 21:21:37

标签: iphone objective-c cocoa-touch

TurbineXMLParser.h

#import <Foundation/Foundation.h>

@interface TurbineXMLParser : NSObject <NSXMLParserDelegate> {
...

TurbineXMLParser.m

#import "TurbineXMLParser.h"

我刚刚在我之前在单个文件中测试的当前项目中添加了一个新类。当我尝试构建项目时,我收到错误:错误:无法找到'NSXMLParserDelegate'的协议声明

我做了一些搜索并尝试添加以下内容......

TurbineXMLParser.h

#import <Foundation/Foundation.h>

@protocol NSXMLParserDelegate;

@interface TurbineXMLParser : NSObject <NSXMLParserDelegate> {
...

但仍然收到警告:警告:找不到协议'NSXMLParserDelegate'的定义

任何帮助将不胜感激

.
.
.

EDIT_002:

从@interface删除<NSXMLParserDelegate>确实有效,但我很好奇为什么,我混淆了&amp;糊涂?我的印象是委托对象必须采用NSXMLParserDelegate协议,即在超类之后添加<NSXMLParserDelegate>

我有两个实例,其工作方式不同,第一个是单个命令行文件中的项目,如果我不添加<NSXMLParserDelegate>,则警告:

class 'TestXMLParser' does not implement the 'NSXMLParserDelegate' protocol

当我尝试使用<NSXMLParserDelegate>构建项目时,第二个实例是我设置多个* .h和* .m文件(其中一个类是MyXMLParser.h,MyXMLParser.m)的地方我得到了这个错误:

error: cannot find protocol declaration for 'NSXMLParserDelegate'

删除<NSXMLParserDelegate>,一切正常,没有错误,没有警告......

加里

4 个答案:

答案 0 :(得分:6)

前向声明NSXMLParserDelegate不太可能有帮助,如果你符合它,它需要实际导入。

如果您尚未将Foundation框架链接到项目中,则会出现原始错误。

在XCode中获取您的目标信息。在“常规”选项卡中,确保Foundation.framework位于链接库列表中。

答案 1 :(得分:5)

您无需将对象定义为NSXMLParserDelegate

请确保执行此操作:

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];

并实现该对象中的方法。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

答案 2 :(得分:4)

虽然NSXMLParser是从iOS2引入的,但代表直到iOS4才被引入。 只需从类中删除协议声明,这对于我在编译3.2时起作用。

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/NSXMLParserDelegate_Protocol/Reference/Reference.html

答案 3 :(得分:2)

你需要说它是SDK4.0中的NSXMLParserDelegate。但是当我添加到接口定义时,它不再在3.0下编译,只是4.0。

在3.0下,它说无法找到NSXMLParserDelegate的协议def。我已经包括:

#import <Foundation/NSXMLParser.h>