在过去的几天里,我一直在开发这个应用程序,最后才将XML数据解析成一个UITableView。但主要问题是,表中显示的实际解析数据并不是应该如何显示的。
例如,我有一个元素(在XML文件中)的值为"134.9“(不带引号),如果我使用'[NSString stringWithFormat:@”in %@“,prices objectAtIndex:indexPath.row];‘,它在表中显示为'{ Lowest = "134.9\n\t";}’。
但是如果我使用'%d‘,它会变成一堆随机数,甚至不匹配134.9?
下面是代码:
cell.textLabel.text = [NSString stringWithFormat:@"£%d", [prices objectAtIndex:indexPath.row]];XML是这样设置的:
<PetrolPrices>
<Fuel type="Unleaded">
<Highest units="p">145.9</Highest>
<Average units="p">135.2</Average>
<Lowest units="p">131.9</Lowest>
</Fuel>
<Fuel type="Diesel">
<Highest units="p">149.9</Highest>
<Average units="p">139.3</Average>
<Lowest units="p">135.9</Lowest>
</Fuel>
<Fuel type="LRP">
<Highest units="p">136.9</Highest>
<Average units="p">136.9</Average>
<Lowest units="p">136.9</Lowest>
</Fuel>
<Fuel type="Super Unleaded">
<Highest units="p">152.9</Highest>
<Average units="p">142.3</Average>
<Lowest units="p">135.9</Lowest>
</Fuel>
<Fuel type="LPG">
<Highest units="p">76.9</Highest>
<Average units="p">76.9</Average>
<Lowest units="p">76.9</Lowest>
</Fuel>
<Link>
</Link>
</PetrolPrices>最后,我使用解析器调用它的位置:
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"ended element: %@", elementName);
if ([elementName isEqualToString:@"Fuel"])
{
[item setObject:fuel_price forKey:@"Lowest"];
[item setObject:fuel_type forKey:@"type"];
[prices addObject:[item copy]];
NSLog(@"adding fuel prices: %@ - %@", fuel_price, fuel_type);
}
}另外,如果有人能告诉我如何也能像在XML <Fuel type="Unleaded">中那样获取属性,我似乎无法检索到这些属性。
提前感谢:)
发布于 2011-08-07 15:49:46
,但如果我使用'%d‘,它会出现一堆随机数
%d是int的格式说明符,但您传入的是对象。如果您只是想要数字,请保留%d,但传入正确的值:
Item *item = [prices objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"£%d", item.price];或者其他类似的东西,这取决于你的对象。
发布于 2011-08-07 15:54:38
看看String Format Specifiers吧。这将使您的编码变得更容易。
https://stackoverflow.com/questions/6971431
复制相似问题