如何存储从控制台流式传输的每个样本值(每分钟心率节拍数),以存储每个值'价值观'并计算我的下一个函数的平均值。 使用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
}
答案 0 :(得分:1)
要理解你的问题有点困难,但我认为问题源于你在代码中使用术语values
,而这实际上只是一个值!如果要在到达时存储每个值,请使用数组属性:
var values = [Double]()
func updateHeartRate(samples: [HKSample]?) {
// ...
let value = sample.quantity.doubleValueForUnit(self.heartRateUnit)
self.values.append(value)
// ...
现在您可以随时返回并获取self.values
中存储的所有值(例如,平均值,找到最大值,或其他任何值)。