我有一个由解析的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
提前感谢您的帮助。
答案 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
,但您实际上只关心didStartElement
和didEndElement
之间找到的字符。将currentElementValue
的实例化移至didStartElement
可解决此问题。