问题是我的API响应将 orders [indexPath.row] .price 作为String返回。该字符串实际上是一个双值,如3.55973455234。我需要将此值转换为类似于3.56的值并显示在UI标签中。从早上起我一直在拉头发来实现这一目标。为什么Swift在转换时如此可怕?
cell.lblPayValue.text = orders[indexPath.row].price
答案 0 :(得分:1)
就这样做:
let formatter = NumberFormatter()
formatter.numberStyle = .currency
if let price = Double(orders[indexPath.row].price), let formattedPrice = formatter.string(for: price) {
cell.lblPayValue.text = formattedPrice
}
cell.lblPayValue.text
Double
答案 1 :(得分:1)
您也可以使用 NumberFormatter ,但您需要将其转换回NSNumber ...
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.locale = Locale(identifier: "en_US")
if let number = formatter.number(from: orders[indexPath.row].price) {
cell.lblPayValue.text = formatter.string(from: number)
}
但请不要创建N NumberFormatter。创建一个并将其存储在某个地方。
答案 2 :(得分:1)
转换非常简单恕我直言。您可以使用带字符串的初始化程序创建一个新的Double。然后你有一个可选的Double。然后可以将其转换为格式化的String。所以......
let price: String = "3.55973455234" // your price
let text = String(format: "%.2f", Double(price)!)
print(text) // prints 3.56