Swift-为什么我的应用程序在这种情况下发现为零

Swift-为什么我的应用程序在这种情况下发现为零,swift,Swift,我有一个从xib文件加载单元格的tableView。单元格包含2个标签,1个显示数量,第二个显示价格。数量是从一个静态模型中提取出来的,工作正常,价格是从一个模型中提取出来的,该模型是根据URLSession的结果填充的。下面是我的cellForRowAt函数,它在这种情况下运行良好: if indexPath.section == 0 { let item: BasketModel = cellItems[indexPath.row] as! BasketModel let o

我有一个从xib文件加载单元格的tableView。单元格包含2个标签,1个显示数量,第二个显示价格。数量是从一个静态模型中提取出来的,工作正常,价格是从一个模型中提取出来的,该模型是根据URLSession的结果填充的。下面是我的cellForRowAt函数,它在这种情况下运行良好:

if indexPath.section == 0 {
    let item: BasketModel = cellItems[indexPath.row] as! BasketModel
    let ordersCell = Bundle.main.loadNibNamed("OrderTableViewCell", owner: self, options: nil)?.first as! OrderTableViewCell

    ordersCell.priceLabel.text = item.price
    ordersCell.quantityLabel.text = String(basketStruct.getQty(id: item.id!))
            return ordersCell
}
我的手机显示如下数量:3价格:0.70

现在,我的问题是,当我改变上面的行,我将价格标签设置为:

ordersCell.priceLabel.text = String(basketStruct.getQty(id: item.id!) * Int(item.price!)!)
我得到一个错误:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
我想要的是数量乘以价格。然而,当我尝试使用item.price进行任何操作时,我必须强制打开它,然后我会得到错误

我该怎么办呢?

不是那个项目。价格是零,而是项目。价格!是零

根据您的问题,您说过显示的价格是0.70,因此我认为item.price必须包含字符串0.70

好吧,0.70不是一个有效的Int,所以当您尝试将其解析为Int时,它的计算结果为nil

我想你指的是双品。价格

作为一种良好的做法,您应该始终检查无效的数字字符串:

if let price = Double(item.price!) {
    // ...
} else {
    print("Invalid price: \(item.price!)")
}

价格是0.70,你确定它可以转换成整数吗?只需安全地打开值,在guards/if中,让我们系统地调试应该分配值的位置。哦,现在我觉得很可笑。谢谢你。忽略了显而易见的一点:“一旦允许,我会将此标记为答案。