for-in循环的结果之和,单位为swift



我在玩健康工具包的Apples示例代码。他们放置了一个for in循环函数,以便在过去24小时内遍历所有样本。代码当然很好用。

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

我一直在尝试,但找不到解决办法。

谢谢Chris

这是代码:

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

我不熟悉HealthKit框架,但您可以使用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())
}

假设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的位置)

最新更新