Проблема NSXMLParser

У меня есть xml-файл, который я анализирую.

NSURL *url = [NSURL URLWithString:@"url.xml"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
self.downloadData = [[NSMutableData alloc] initWithLength:0];
self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

У меня все соединения работают, и я думал, что синтаксический анализ работает, но у меня проблемы, и я не знаю, что я делаю неправильно.

мой сделалStartElement:

-(void) parser:(NSXMLParser *) parser  didStartElement:(NSString *) elementName  namespaceURI:(NSString *) namespaceURI  qualifiedName:(NSString *) qName   attributes:(NSDictionary *) attributeDict {
    if ([elementName isEqualToString:kimgurl])
    {
        elementFound = YES;
    }
}

найден персонаж:

-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string {
if (elementFound == YES) {
         if(!currentValue)
         {
             currentValue = [[NSMutableString alloc] init];
         }

        [currentValue appendString: string];
    }
}

затем сделалEndElement:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {  
    if (elementFound) {
        if ([elementName isEqualToString:kimgurl]) {
            NSLog(@"imgurl: %@", currentValue);
            imageItems.imageURL = currentValue;
            NSLog(@"elname: %@", elementName);
            NSLog(@"img: %@", kimgurl);
            [currentValue setString:@""];
            NSLog(@"imageitem: %@", imageItems.imageURL);
        }
    }
}

У меня есть NSLogs, потому что imageItems.imageURL имеет значение null. Это файл класса, который похож на этот.

ImageItems.h

@interface ImageItems : NSObject {
    //parsed data
    NSString *imageURL;
}

@property (nonatomic, retain) NSString *imageURL;

@end

ImageItems.m

#import "ImageItems.h"

@implementation ImageItems    
@synthesize imageURL;

-(void)dealloc
{
    [imageURL release];
    [super dealloc];
}

@end

Как вы можете сказать по моему коду, я новичок в Objective-C.

currentValue имеет значение, которое я ищу. Почему imageItems имеет значение null? Что мне не хватает?


person user574947    schedule 13.01.2011    source источник


Ответы (1)


Я не вижу назначения «imageItems» нигде в вашем коде. Вероятно, в какой-то момент вам понадобится назначить его экземпляру ImageItems. Возможно, с self.imageItems = [[[ImageItems alloc] init] autorelease] или imageItems = [[ImageItems alloc] init];?

person Jesse Rusak    schedule 14.01.2011
comment
Я делаю это и получаю EXC_BAD_ACCESS. Может быть, это как-то связано с вызовом ImageItems как @class? - person user574947; 14.01.2011
comment
Попробуйте опубликовать этот код? Где EXC_BAD_ACCESS? Попробуйте использовать NSZombies — markj.net/iphone-memory-debug-nszombie чтобы найти источник проблемы. - person Jesse Rusak; 14.01.2011
comment
может быть, я просто делаю все это неправильно. У вас есть пример того, как собирать данные, которые вам нужны, при анализе XML-файла? Вы создаете класс для хранения данных? Если у кого-то есть примеры, было бы здорово. - person user574947; 15.01.2011