在uitableview的自定义单元格中显示双值



所以,充分披露:我是Swift的新手。

我正在一个应用程序上工作,试图在自定义单元格中获得一个标签来显示DOUBLE值。我曾尝试使用if let条件绑定将其从字符串类型强制转换为双精度类型,但我的源代码不是可选类型,因此我无法将其设置为可选类型。所以我不知道该怎么做。


条件绑定的初始化项必须是可选类型,而不是'Double'
不能给Double类型赋值?'键入'字符串?'
在调用初始化式

时没有精确匹配,下面是代码:

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已经一个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,那么这意味着purchaseDateDouble?,并且您试图将其设置为期望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
}

相关内容

  • 没有找到相关文章

最新更新