我有一个要解析的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];

我的所有连接都在工作,我以为我在进行解析,但是我遇到问题,不知道我在做什么错。

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

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

        [currentValue appendString: string];
    }
}

然后didEndElement:
- (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?我想念什么?

最佳答案

我在代码的任何地方都看不到“imageItems”的分配。您可能需要在某个时候将其分配给ImageItems的实例。也许使用self.imageItems = [[[ImageItems alloc] init] autorelease]imageItems = [[ImageItems alloc] init];

08-05 23:04