为 '的NSXMLParser' 不可见@interface声明选择parseXML

为 '的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对象。

+0

我已经创建了parseXML函数。我尝试了你说的,但后来我得到几乎相同的错误xmlToString = [[XMLParser alloc] initWithData:data]; – BlackM 2013-02-14 00:47:58

+0

其实问题是我创建的XMLParser已经存在。即使我将XMLParser重命名为XMLParserC,我在这里也遇到了错误:xmlToString = [[XMLParserC alloc] initWithData:data];对于不兼容的指针类型和[xmlToString parseXML]的相同错误 – BlackM 2013-02-14 01:08:50