为 '的NSXMLParser' 不可见@interface声明选择parseXML
问题描述:
我有这样的文件:为 '的NSXMLParser' 不可见@interface声明选择parseXML
XMLParser.h
#import <Foundation/Foundation.h>
@interface XMLParser : NSObject <NSXMLParserDelegate>
{
NSXMLParser *parser;
}
-(id)initWitData:(NSData *)data;
-(void)parseXML;
@end
XMLParser.m(的一部分)
#import "XMLParser.h"
@implementation XMLParser
- (id)initWitData:(NSData *)data
{
if (self = [super init]) {
parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
}
return self;
}
- (void)parseXML{
[parser parse];
};
的ViewController .h
#import <UIKit/UIKit.h>
#import "XMLParser.h"
@interface ViewController : UIViewController <CLLocationManagerDelegate>
{
NSXMLParser *xmlToString;
}
@end
和ViewController.m
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:@"world" ofType:@"xml"];
NSData *data = [[NSData alloc]initWithContentsOfFile:xmlFilePath];
xmlToString = [[NSXMLParser alloc]initWithData:data];
//[xmlToString setDelegate:self];
[xmlToString setShouldResolveExternalEntities:YES];
[xmlToString parseXML]; // I am getting the error here.
}
任何人可以帮助我吗?我在其他项目和工作中做的几乎一样!唯一的区别是initWithData
答
您正在创建一个NSXMLParser
,然后尝试调用其上的一个方法XMLParser
。你确定你不是故意申报xmlToString
作为XMLParser*
然后说
xmlToString = [[XMLParser alloc] initWithData:data];
当然,你要-setShouldResolveExternalEntities:
呼叫再不行,所以你可能需要公开您的基础NSXMLParser
对象。
我已经创建了parseXML函数。我尝试了你说的,但后来我得到几乎相同的错误xmlToString = [[XMLParser alloc] initWithData:data]; – BlackM 2013-02-14 00:47:58
其实问题是我创建的XMLParser已经存在。即使我将XMLParser重命名为XMLParserC,我在这里也遇到了错误:xmlToString = [[XMLParserC alloc] initWithData:data];对于不兼容的指针类型和[xmlToString parseXML]的相同错误 – BlackM 2013-02-14 01:08:50