for - in循环中的结果总和,在swift中

时间:2015-03-24 16:19:36

标签: ios iphone swift for-loop

我正在玩健康套件的Apples示例代码。他们设置了一个for-in循环函数来迭代过去24小时内的所有样本。代码当然很棒。

在swift中使用for-in循环,是否可以找到所有值的总和?

我一直在尝试但找不到解决方案。

由于 克里斯

以下是代码:

for sample in results as [HKQuantitySample] {
                let joules = sample.quantity.doubleValueForUnit(HKUnit.jouleUnit())

2 个答案:

答案 0 :(得分:4)

我不熟悉Health Kit框架,但您可以使用reduce对数组中的所有值求和:

let array = [1, 2, 3, 4, 5]
let sum = array.reduce(0, +)  // sum == 15

0是起始值,+是对起始值和数组中每个项目执行的操作。

查看代码,您可能需要提供一个减少的闭包,如下所示:

let samples = results as [HKQuantitySample]
let sum = samples.reduce(0.0) {
    $0 + $1.quantity.doubleValueForUnit(HKUnit.jouleUnit())
}

答案 1 :(得分:1)

假设samplesHKQuantitySample数组:

// samples is an [HKQuantitySample]
var joulesSum : Double = 0.0 // Make sure that : it's a var not a let and Double is the right type

for aSample in samples {
    joulesSum += aSample.quantity.doubleValueForUnit(HKUnit.jouleUnit())
}

或者在你的情况下:

var joulesSum : Double = 0.0

for aResult in results {
    joulesSum += aResult.quantity.doubleValueForUnit(HKUnit.jouleUnit())
}

它有帮助吗?如果没有,请添加以前的代码(创建results的位置)。