我正在玩健康套件的Apples示例代码。他们设置了一个for-in循环函数来迭代过去24小时内的所有样本。代码当然很棒。
在swift中使用for-in循环,是否可以找到所有值的总和?
我一直在尝试但找不到解决方案。
由于 克里斯
以下是代码:
for sample in results as [HKQuantitySample] {
let joules = sample.quantity.doubleValueForUnit(HKUnit.jouleUnit())
答案 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)
假设samples
是HKQuantitySample
数组:
// 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
的位置)。