如何存储控制台,swift 2.2返回的值流

时间:2016-09-26 01:07:07

标签: swift

如何存储从控制台流式传输的每个样本值(每分钟心率节拍数),以存储每个值'价值观'并计算我的下一个函数的平均值。 使用NSUserDefaults只是存储最后一个值。

 func updateHeartRate(samples: [HKSample]?) {
    guard var heartRateSamples = samples as? [HKQuantitySample] else {return}

    dispatch_async(dispatch_get_main_queue()) {
        var heartratePeak = 0.0
        guard let sample = heartRateSamples.first else{return}
        let values = sample.quantity.doubleValueForUnit(self.heartRateUnit)
        self.label.setText(String(UInt16(value)))
        print(value)
            while true {
                if values > heartratePeak {
                    heartratePeak = values
                    print("heartrate Peak is")
                    print(heartratePeak)
                    continue
                }
        NSUserDefaults.standardUserDefaults().setObject(values, forKey: "bpmValue")
        NSUserDefaults.standardUserDefaults().setObject(heartratePeak, forKey: "heartratePeak")

func average(values: Int...) -> Double {
    var sum = 0
    var count = 0
    for value in values {
        sum += number
    }
    var  ave : Double = Double(sum) / Double(count)
    return ave
}

1 个答案:

答案 0 :(得分:1)

要理解你的问题有点困难,但我认为问题源于你在代码中使用术语values,而这实际上只是一个值!如果要在到达时存储每个值,请使用数组属性:

var values = [Double]()
func updateHeartRate(samples: [HKSample]?) {
    // ...
    let value = sample.quantity.doubleValueForUnit(self.heartRateUnit)
    self.values.append(value)
    // ...

现在您可以随时返回并获取self.values中存储的所有值(例如,平均值,找到最大值,或其他任何值)。