2012-01-16 90 views
2

這是我在appdelegate.m代碼我解析XML並警告

NSURL *url = [[NSURL alloc] initWithString:kBioXML]; 
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

XMLParser *parser = [[XMLParser alloc]initXMLParser]; 
[xmlParser setDelegate:parser];  < - warning 

XMLParser.h看起來像

@class AppDelegate, Bio; 

@interface XMLParser : NSObject { 
NSMutableString *currentElementValue; 

AppDelegate *appDelegate; 
Bio *aBio; 

NSString * bioText; 
} 
@property(nonatomic, retain) NSString *bioText; 
- (XMLParser *) initXMLParser; 
@end 

而且XMLParser.m

@implementation XMLParser 

@synthesize bioText; 

- (XMLParser *) initXMLParser{ 
[super init]; 
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
bioText = @""; 
return self; 
} 

的警告是「發送XMLParser *」到不兼容類型的參數'id 我應該改變以解決此警告嗎?

謝謝

+0

見更新答案 – 2012-01-16 12:29:05

回答

2

寫的,而不是你的方法..

-(id) initXMLParser 
{ 
    self = [super init]; 
    if(self != nil) 
    { 
     appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     bioText = @""; 
    } 
    return self; 
} 

更新

實現NSXMLParserDelegate這樣

在您的.h文件替換@interface XMLParser : NSObject@interface XMLParser : NSObject <NSXMLParserDelegate>了它?

+0

相同的警告...... 'ID ' – 2012-01-16 12:11:10

+0

你的意思NSXMLParserDelegate * PAR = [NSXMLParserDelegate ALLOC] INIT ]。 ? – 2012-01-16 12:43:24

+0

YEAP !!!非常感謝你!!!感謝你的幫助! – 2012-01-16 12:48:11

2

您應該使用NSXMLParserDelegate對象而不是nsxml解析器,並且NSXMLParserDelegate協議定義由NSXMLParser對象的委託實現的可選方法。

我希望它可以幫助你!

+0

你可以賴特請我應該改變代碼 – 2012-01-16 12:19:44

+0

你可以試試這種方式NSXMLParser * xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; XMLParserdelegate * parserdeleagte = [[XMLParserdelegate alloc] init]; [xmlParser setDelegate:parserdelegate]; [xmlParser parse]; – Ballu 2012-01-16 12:30:57

+0

它說沒有XMLParserdelegate – 2012-01-16 12:41:36