ios - 如何提取和计算具有属性 price 的对象数组的价格
问题描述
我有一个对象数组,每个对象都有属性价格。我想要的是提取每个对象的价格,然后得出价格的总和,最后在标签中显示 TotalPrice。目前我的一系列价格变得疯狂,我不知道为什么。
这是我目前的代码:
class CartViewController: UIViewController {
var productsInCartArray = [Product]()
var productPricesArray = [Float]()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = cartTableView.dequeueReusableCell(withIdentifier: Constants.identifierCartTotalPriceCell, for: indexPath) as! CartTableViewCell
var totalSum: Float = 0
for eachProduct in productsInCartArray{
productPricesArray.append(eachProduct.price)
totalSum = productPricesArray.reduce(0, +)
cell.cartTotalPriceLabel.text = String(totalSum)
return cell
}
}
}
这是一个屏幕截图:
解决方案
productPricesArray 是一个实例变量,而不是局部变量,因此每次生成单元格时都会向 productPricesArray 添加一个元素;如果您有两个单元格,则该数组中将有 4 个价格。此外,每次在此表上 reloadData() 时,都会向该数组添加更多价格。
您应该将该逻辑从该方法中提取出来,而是在调用表上的 reloadData(或其他加载时间)之前触发它。
推荐阅读
- java - 在 actionlistener 中更改变量数据
- mysql - 如何让mysql查询更快
- jsp - 战争中的图像未显示在 JSP 上
- php - 在 Wamp Server Mysql 命令行中使用 Mysqldump 备份所有数据库时出现错误 1064(42000)
- azure-active-directory - Intune 公司门户应用和第 3 方 iOS 应用之间的“SSO”
- c# - 在 Asp.NetCore Web 应用程序中替代 CustomErrors Mode = "RemoteOnly"
- javascript - 将第一次出现滚动到 div 内的顶部位置
- sql - 获取最后插入的 id 作为多插入的一部分?
- powershell - Password Generator - Generate password on demand
- jquery - 不刷新使用Ajax和node js从SQL数据库获取数据