我在玩健康工具包的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())
}
假设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
的位置)