Я анализирую XML и получаю предупреждение - PullRequest
2 голосов
/ 16 января 2012

Вот мой код в appdelegate.m

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 что я должен изменить, чтобы решить это предупреждение?

спасибо

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Вы должны использовать объект NSXMLParserDelegate вместо анализатора nsxml, а протокол NSXMLParserDelegate определяет необязательные методы, реализованные делегатами объектов NSXMLParser.

Надеюсь, это поможет тебе !!!

2 голосов
/ 16 января 2012

Ваш класс XMLParser не реализует интерфейс NSXMLParserDelegate

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html

2 голосов
/ 16 января 2012

Напишите это вместо вашего метода ..

-(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> понял?

...