fuz*_*oat 3 iphone cocoa-touch objective-c
TurbineXMLParser.h
#import <Foundation/Foundation.h>
@interface TurbineXMLParser : NSObject <NSXMLParserDelegate> {
...
Run Code Online (Sandbox Code Playgroud)
TurbineXMLParser.m
#import "TurbineXMLParser.h"
Run Code Online (Sandbox Code Playgroud)
我刚刚在当前项目中添加了一个新类,我之前在单个文件中进行了测试.当我尝试构建项目时,我收到错误:错误:找不到'NSXMLParserDelegate'的协议声明
我做了一些搜索并尝试添加以下内容......
TurbineXMLParser.h
#import <Foundation/Foundation.h>
@protocol NSXMLParserDelegate;
@interface TurbineXMLParser : NSObject <NSXMLParserDelegate> {
...
Run Code Online (Sandbox Code Playgroud)
但仍然收到警告:警告:未找到协议'NSXMLParserDelegate'的定义
任何帮助将非常感激
.
.
.
Run Code Online (Sandbox Code Playgroud)
<NSXMLParserDelegate>从@interface 删除确实有效,但我很好奇为什么,我混淆和混乱?我的印象是委托对象必须采用NSXMLParserDelegate协议,即<NSXMLParserDelegate>在超类之后添加.
我有两个实例,其工作方式不同,第一个是单个命令行文件中的项目,如果我不添加,<NSXMLParserDelegate>则警告:
class 'TestXMLParser' does not implement the 'NSXMLParserDelegate' protocol
Run Code Online (Sandbox Code Playgroud)
第二个实例是我在设置多个*.h和*.m文件(其中一个类是MyXMLParser.h,MyXMLParser.m)时,我尝试构建项目时<NSXMLParserDelegate>遇到此错误:
error: cannot find protocol declaration for 'NSXMLParserDelegate'
Run Code Online (Sandbox Code Playgroud)
删除<NSXMLParserDelegate>,一切正常,没有错误,没有警告......
加里
前向声明NSXMLParserDelegate不太可能有帮助,如果你符合它,它需要实际导入.
如果您尚未将Foundation框架链接到项目中,则会出现原始错误.
在XCode中获取您的目标信息.在"常规"选项卡中,确保Foundation.framework位于链接库列表中.
您不需要将对象定义为NSXMLParserDelegate
只要确保你这样做:
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
并实现该对象中的方法.
- (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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13987 次 |
| 最近记录: |