lee*_*ger 0 arrays for-loop ios swift
我写了我认为是基本函数来总结数组的值并计算预算中剩余的数量.我使用for循环来对数组的元素求和,然后从预算中减去该值.但是,由于某种原因,sum的值在for循环中正确更新,但for循环中的sum值始终为零.在下面,println"循环中的Sum"是正确的,但println"Sum is"总是等于0. dataModel.spendingDataDisplay是一个对象数组.谢谢你的帮助.
func amountLeftToSpend ()->Double {
var sum:Double = 0.0
for spendingItem in dataModel.spendingDataDisplay {
var sum = spendingItem.amountSpent + sum
println("Spending Item .amountSpent\(spendingItem.amountSpent)")
println("Sum in the loop is \(sum)")
}
println("Sum is \(sum)")
let amountLeftInBudget = dataModel.settingsData.weeklyBudget - sum
println("Amount Left in Budget is \(amountLeftInBudget)")
return amountLeftInBudget
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的,你有两个sum变量.所以你可以通过消除内部var引用来解决这个问题:
var sum:Double = 0.0
for spendingItem in dataModel.spendingDataDisplay {
sum += spendingItem.amountSpent
}
Run Code Online (Sandbox Code Playgroud)
或者,如果spendingDataDisplay是Swift数组,您还可以使用以下reduce方法:
let sum = dataModel.spendingDataDisplay.reduce(0.0) { $0 + $1.amountSpent }
Run Code Online (Sandbox Code Playgroud)