Objective c NSXMLParser替换索引0,而不是添加到可变数组中

Objective c NSXMLParser替换索引0,而不是添加到可变数组中,objective-c,nsmutablearray,nsxmlparser,Objective C,Nsmutablearray,Nsxmlparser,我试图从rss提要的cdata中获取图像-我可以很好地获取图像并将其添加到可变数组中,但是当我记录数组时,它总是只包含最新的图像url-帮助 这就是我得到的: - (void)viewDidLoad { [super viewDidLoad]; NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://somewebsite.com/feed"]];

我试图从rss提要的cdata中获取图像-我可以很好地获取图像并将其添加到可变数组中,但是当我记录数组时,它总是只包含最新的图像url-帮助

这就是我得到的:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://somewebsite.com/feed"]];
    [parser setDelegate:self];
    [parser parse];
    NSLog(@"VIEWDIDLOAD SAYS: %@",self.imageURLS);
}

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    element = elementName;
    if ([element isEqualToString:@"item"] || [element isEqualToString:@"entry"]) {
        self.imageURLS = [[NSMutableArray alloc]init];
        description = [[NSMutableString alloc] init];
    }
}

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
    if([element isEqualToString:@"description"]) {
        self.imageSource = nil;

        NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
        self.imageSource = [self getFirstImageUrl:someString];

        if (self.imageSource)
            NSLog(@"IMAGE URL STRING %@", self.imageSource);
    }
}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if ([element  isEqualToString:@"description"]) {
        [self.imageURLS addObject:self.imageSource];
        NSLog(@"ImageURLS: %@", self.imageURLS);
    }
}

-(NSString *)getFirstImageUrl: (NSString *) html {
    NSScanner *theScanner;
    NSString *imageURL = nil;

    theScanner = [NSScanner scannerWithString: html];

    // find start of tag
    [theScanner scanUpToString: @"<img" intoString: NULL];
    if ([theScanner isAtEnd] == NO) {

        [theScanner scanUpToString: @"src=\"" intoString: NULL];
        NSInteger newLoc2 = [theScanner scanLocation] + 5;
        [theScanner setScanLocation: newLoc2];

        // find end of tag
        [theScanner scanUpToString: @"\"" intoString: &imageURL];
    }

    return imageURL;
}
-(void)viewDidLoad{
[超级视图下载];
NSXMLParser*解析器=[[NSXMLParser alloc]initWithContentsOfURL:[NSURL URLWithString:@]http://somewebsite.com/feed"]];
[解析器setDelegate:self];
[语法分析器解析];
NSLog(@“VIEWDIDLOAD说:%@”,self.imageURL);
}
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName属性:(NSDictionary*)attributeDict{
元素=元素名称;
if([element IsequalString:@“item”]| |[element IsequalString:@“entry”])){
self.imageURL=[[NSMutableArray alloc]init];
description=[[NSMutableString alloc]init];
}
}
-(void)解析器:(NSXMLParser*)解析器foundCDATA:(NSData*)CDATA块{
if([元素isEqualToString:@“description”]){
self.imageSource=nil;
NSString*someString=[[NSString alloc]initWithData:CDATA块编码:NSUTF8StringEncoding];
self.imageSource=[self-getFirstImageUrl:someString];
if(self.imageSource)
NSLog(@“图像URL字符串%@”,self.imageSource);
}
}
-(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName{
if([元素isEqualToString:@“description”]){
[self.imageURLS addObject:self.imageSource];
NSLog(@“ImageURLS:%@”,self.ImageURLS);
}
}
-(NSString*)getFirstImageUrl:(NSString*)html{
NSScanner*扫描仪;
NSString*imageURL=nil;
扫描仪=[NSScanner SCANNER WITHSTRING:html];
//查找标记的开始
[扫描者扫描字符串:@“您的意思是:

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    element = elementName;
    if ([element isEqualToString:@"item"] || [element isEqualToString:@"entry"]) {
        self.imageURLS = [[NSMutableArray alloc]init];
        description = [[NSMutableString alloc] init];
    }
}

这不太可能是正确的,因为这意味着每次遇到新的“item”或“entry”元素时,您都会丢弃现有的
self.imageURL
,并将其替换为一个空数组。

请显示您正在解析的XML的结构。这很有意义-尝试将其移动到viewDidLoad,结果是(lldb)在我的日志框中,仅此而已:/我是新手,不知道问题出在哪里-断点显示了DiEndElement中的行,该行将对象添加到工作的数组中-该(lldb)不相关!非常感谢!