所以,充分披露:我是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
,那么这意味着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
}