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

Ios for-in循环的结果之和,以swift为单位,ios,iphone,swift,for-loop,Ios,Iphone,Swift,For Loop,我正在玩苹果健康套件的示例代码。他们使用for-in-loop函数在过去24小时内遍历所有样本。代码当然很有用 在swift中使用for in循环,是否可以找到所有值的总和 我一直在努力,但找不到解决办法 谢谢 克里斯 代码如下: for sample in results as [HKQuantitySample] { let joules = sample.quantity.doubleValueForUnit(HKUnit.jouleUnit()) 假设s

我正在玩苹果健康套件的示例代码。他们使用for-in-loop函数在过去24小时内遍历所有样本。代码当然很有用

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

我一直在努力,但找不到解决办法

谢谢 克里斯

代码如下:

for sample in results as [HKQuantitySample] {
                let joules = sample.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())
}

有帮助吗?如果没有,请添加上一个代码(创建
结果的位置)。

假设
样本
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())
}

有帮助吗?如果没有,请添加上一个代码(创建
结果的地方)。

我不熟悉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())
}

我不熟悉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())
}

Roman,你是对的,这样做比尝试使用for循环容易得多。它更安全,并且允许你将
sum
定义为一个常量,这也很好。很高兴它起到了作用。罗曼,你是对的,这样做比尝试使用for循环容易得多。它更安全,而且它允许你将
sum
定义为一个常量,这也很好。很高兴这有帮助。