在 uitableview 的自定义单元格中显示双精度值
showing a double value in a custom cell in uitableview
所以,完全披露:我是 Swift 的新手。
我正在开发一个应用程序,试图在自定义单元格中获取标签以显示 DOUBLE 值。我尝试执行 if let 条件绑定以将其从字符串转换为双精度类型,但我的源不是可选类型,我无法将其设为可选。所以我不确定该怎么做。
具体错误如下:
条件绑定的初始化器必须是 Optional 类型,而不是 'Double'
无法将类型 'Double?' 的值分配给类型 'String?'
在调用初始化程序时没有完全匹配
这是代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DemoTableViewCell", for: indexPath) as! DemoTableViewCell
cell.partNameLabel.text = parts[indexPath.row].partName
// Convert string value to double
if let value = parts[indexPath.row].partCost {
cell.partCostLabel.text = Double(value)
} else {
cell.partCostLabel.text = 0.00
}
cell.purchaseDateLabel.text = parts[indexPath.row].purchaseDate
return cell
}
提前致谢!
从错误看来,parts[indexPath.row].partCost
is already a Double
-- 错误告诉你 if let
只适用于Optional
种类型。
因此,您可以将 if let / else
块替换为:
cell.partCostLabel.text = String(format: "%.2f", parts[indexPath.row].partCost)
cell.partCostLabel.text = 0.00
不起作用,因为 Text
需要一个 String
- 使用上面的代码您将不再需要它,但是处理它的方法是 cell.partCostLabel.text = "0.00"
最后,Cannot assign value of type 'Double?' to type 'String?'
——我不确定发生在哪一行,但如果它是 cell.purchaseDateLabel.text = parts[indexPath.row].purchaseDate
那么这意味着 purchaseDate
是一个 Double?
并且您正在尝试将其设置为需要 String
的值。您将需要考虑如何将 Double
转换为日期,但 这个 可能是您需要 if let
:
if let purchaseDate = parts[indexPath.row].purchaseDate {
cell.purchaseDateLabel.text = "\(purchaseDate)" //you probably want a different way to display this, though
}
所以,完全披露:我是 Swift 的新手。
我正在开发一个应用程序,试图在自定义单元格中获取标签以显示 DOUBLE 值。我尝试执行 if let 条件绑定以将其从字符串转换为双精度类型,但我的源不是可选类型,我无法将其设为可选。所以我不确定该怎么做。
具体错误如下:
条件绑定的初始化器必须是 Optional 类型,而不是 'Double'
无法将类型 'Double?' 的值分配给类型 'String?'
在调用初始化程序时没有完全匹配
这是代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DemoTableViewCell", for: indexPath) as! DemoTableViewCell
cell.partNameLabel.text = parts[indexPath.row].partName
// Convert string value to double
if let value = parts[indexPath.row].partCost {
cell.partCostLabel.text = Double(value)
} else {
cell.partCostLabel.text = 0.00
}
cell.purchaseDateLabel.text = parts[indexPath.row].purchaseDate
return cell
}
提前致谢!
从错误看来,parts[indexPath.row].partCost
is already a Double
-- 错误告诉你 if let
只适用于Optional
种类型。
因此,您可以将 if let / else
块替换为:
cell.partCostLabel.text = String(format: "%.2f", parts[indexPath.row].partCost)
cell.partCostLabel.text = 0.00
不起作用,因为 Text
需要一个 String
- 使用上面的代码您将不再需要它,但是处理它的方法是 cell.partCostLabel.text = "0.00"
最后,Cannot assign value of type 'Double?' to type 'String?'
——我不确定发生在哪一行,但如果它是 cell.purchaseDateLabel.text = parts[indexPath.row].purchaseDate
那么这意味着 purchaseDate
是一个 Double?
并且您正在尝试将其设置为需要 String
的值。您将需要考虑如何将 Double
转换为日期,但 这个 可能是您需要 if let
:
if let purchaseDate = parts[indexPath.row].purchaseDate {
cell.purchaseDateLabel.text = "\(purchaseDate)" //you probably want a different way to display this, though
}