从解析的xml文件为UITableviewCell设置textLabel.text?

时间:2013-11-30 21:24:30

标签: ios xml parsing uitableview

我有一个由解析的xml制作的列表。我需要将每个列表项的文本设置为来自xml的标题。

以下是代码

theList = [app.listArray objectAtIndex:indexPath.row];
cell.textLabel.text = theList.name;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

列表显示为空白。没有文字。

我们知道xml解析器正常工作,因为如果我们单击列表项,它会将您带到我们创建的另一个屏幕,它将显示从xml文件中获取的所有信息。

我们已尝试将文本设置为默认字符串,并且工作正常。

我们也试过这个

self.title=theList.name

并将列表中的最后一项设置为菜单标题。

这是项目的链接,因为您可以看到如果运行它,解析器可以正常工作,但不会填充单元格textLabel。

该项目的链接是:https://github.com/iElmo/XML

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你的解析器中有一个小错误,你在抓取开始和结束标记之间的数据。因此,您的字符串值在它们的开头有新的行字符。您可以通过修剪空白来修复此问题,或者更好地修复解析器:

-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{

    if ([elementName isEqualToString:@"Prices"]) {

        app.listArray = [[NSMutableArray alloc] init];
    }
    else if([elementName isEqualToString:@"Price" ] ){

        theList = [[List alloc] init];

        theList.drinkID = [[attributeDict objectForKey:@"id"] integerValue];

    }
    else {
        currentElementValue = [[NSMutableString alloc] init];
    }
}

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

    [currentElementValue appendString:string];
}

以前的解析器在调用currentElementValue时随时初始化foundCharacters,但您实际上只关心didStartElementdidEndElement之间找到的字符。将currentElementValue的实例化移至didStartElement可解决此问题。