NSString stringWithFormat:用于数字值

时间:2011-08-07 07:44:09

标签: iphone sdk nsstring nsxmlparser

过去几天一直在使用这个应用程序,最后才将XML数据解析为UITableView。但主要问题是解析后显示的实际数据不是应该如何显示的。

例如,我有一个元素(在XML文件上),其值为“134.9”(不带引号),如果我使用'[NSString stringWithFormat:@“£%@”,[price 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">中获取属性,我似乎无法检索到它。

提前致谢:)

2 个答案:

答案 0 :(得分:4)

  

但如果我使用'%d',它会出现一堆随机数

%d是int的格式说明符,但是您传入了一个对象。如果您只想要数字,请保留%d但传递正确的值:

Item *item = [prices objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"£%d", item.price];

或沿着这些线的东西,取决于你的对象。

答案 1 :(得分:0)

看看String Format Specifiers。这将使您的编码更容易。