2013-02-14 54 views
0

我有這樣的文件:爲 '的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

回答

2

您正在創建一個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

相關問題