如何解决Swift:如何在标签中显示 Int?
我需要在 TableViewCell 标签中显示 Int 以获得总和值。 这是我的代码:
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "eventCell",for: indexPath) as! BudgetTableViewCell
let budgetEvent: BudgetModel
budgetEvent = budgetList[indexPath.row]
cell.nameEventLabel.text = budgetEvent.eventName
cell.spentBudgetLabel.text = String(budgetEvent.spentBudget!)
let totalSpent = budgetList.map{ $0.spentBudget! }.reduce(0,+)
print("sum \(totalSpent)")
return cell
}
当我运行我的应用程序时,我收到错误消息:“线程 1:致命错误:在解开可选值时意外发现 nil”并且值为 nil。
解决方法
您试图强制解开您的值,这不是一个好习惯,好像该值不存在一样,您的应用程序将失败/崩溃。
强制解包意味着您使用 ! 运算符来告诉编译器您确定那里有一个值,我们可以提取它。在以下几行中,您使用了强制展开:
// 1
cell.spentBudgetLabel.text = String(budgetEvent.spentBudget!)
// 2
let totalSpent = budgetList.map{ $0.spentBudget! }.reduce(0,+)
很难判断是哪一个导致了您的错误,但您可以改进代码以帮助您识别问题:
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "eventCell",for: indexPath) as! BudgetTableViewCell
let budgetEvent = budgetList[indexPath.row]
cell.nameEventLabel.text = budgetEvent.eventName
if let spentBudget = budgetEvent.spentBudget {
cell.spentBudgetLabel.text = String(spentBudget)
} else {
print("SpentBudget is empty")
}
let totalSpent = budgetList.compactMap{ $0.spentBudget }.reduce(0,+)
print("sum \(totalSpent)")
return cell
}
我用 map
替换了 compactMap
函数,它只会返回非可选值。您可以阅读有关此 here
你可以这样使用,
cell.spentBudgetLabel.text = String(format: "%d",budgetEvent.spentBudget)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。