2016-09-26 71 views
-1

如何存儲從控制檯流出的每個樣本值(每分鐘心跳速率),以存儲「值」的每個「值」並計算平均值我的下一個功能。 使用NSUserDefaults只是存儲最後一個值。如何存儲由控制檯返回的值流swift 2.2

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

「從控制檯流出」是什麼意思?您無法讀取代碼中的任何「控制檯」。 – matt

+0

此外,你的代碼缺少這麼多閉合大括號,它不清楚事情應該如何適應在一起。 – matt

+0

感謝馬特,我是一名初學者,對術語不太確定。我看到我的控制檯中返回的值,我想知道如何存儲它們。我正在使用NSUserDefault,因爲我想將峯值存儲在另一個控制器上的另一個函數中。我想存儲從函數返回的心跳信息流,以便我可以繪製此圖並計算平均值。 –

回答

1

這一點很難使你的問題的意義,但我覺得從你在代碼中使用的術語values的問題源於當這其實就是隻有一個值!如果要存儲的每個值,因爲它到達時,使用一個數組屬性:

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

現在,你可以在任何時間回去取存儲在self.values(例如,取它們的平均值,發現最大的所有值, 管他呢)。

+0

謝謝你馬特!是的,我想存儲每個值,因爲它到達(不知道該怎麼說)。 –