如何统计CartDataModal数组字典中ItemQuant的键值总和?
如何统计CartDataModal中cartArrayDict数组的ItemQuant总和?
嘿,我来帮你搞定这个统计购物车商品总数量的问题~首先得注意你数据里的小细节:ItemQuant的值既有字符串类型(比如"2")又有整数类型(比如0),计算前得先统一把这些值转成整数,避免类型错误。下面给你两种实用的实现方式:
方法一:用Swift的reduce函数(简洁风格)
reduce是Swift里处理集合累加的常用工具,用闭包就能完成计算:
let totalQuantity = CartDataModal.shared_Inst.cartArrayDict.reduce(0) { sum, item in // 处理ItemQuant的不同类型,统一转成Int let quantity: Int if let strQuant = item["ItemQuant"] as? String { quantity = Int(strQuant) ?? 0 // 字符串转Int,转失败就取0兜底 } else if let intQuant = item["ItemQuant"] as? Int { quantity = intQuant } else { quantity = 0 // 遇到未知类型也取0,避免崩溃 } return sum + quantity } // 输出结果 print("所有商品的总数量:\(totalQuantity)")
方法二:循环遍历(直观易懂)
如果觉得闭包有点绕,用普通的for循环也很清晰,适合新手理解:
var total = 0 for cartItem in CartDataModal.shared_Inst.cartArrayDict { var itemQuant = 0 // 逐个处理每个字典里的ItemQuant值 if let strValue = cartItem["ItemQuant"] as? String { itemQuant = Int(strValue) ?? 0 } else if let intValue = cartItem["ItemQuant"] as? Int { itemQuant = intValue } total += itemQuant } print("所有商品的总数量:\(total)")
两种方法都能得到正确的总和(比如你给的示例数据,结果就是2)。如果以后你的接口能把ItemQuant统一成Int类型,代码还能再简化不少~
内容的提问来源于stack exchange,提问作者Gurjit Singh
相关产品推荐
相关产品推荐

