title: How to read healthKit Heartrate data?
body: <p>I know this questions been asked, but hasn't really been answered.  I've tried things from threads like this: 
  <a href="https://stackoverflow.com/questions/31440205/heart-rate-with-apples-healthkit">Heart Rate With Apple&#39;s Healthkit</a></p>
  
  <p>I tried converting this from Objective-C to Swift but didn't work.</p>
  
  <p>My question is, what's the best way to read heart rate data from health kit.  I want to be able to read every heart rate measurement from the time it started taking them, and I want to be able to see the time/day stamps of said measurements.</p>
  
  <p>I asked for permission here: </p>
  
  <pre><code>import Foundation
  import UIKit
  import HealthKit
  
  class HealthKitManager: NSObject {
  
  static let healthKitStore = HKHealthStore()
  
  static func authorizeHealthKit() {
  
      let healthKitTypes: Set = [
          HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!,
      ]
  
      healthKitStore.requestAuthorizationToShareTypes(healthKitTypes,
                                                      readTypes: healthKitTypes) { _, _ in }
      }
  }
  </code></pre>
  
  <p>Here is my view Controller code for now (I'm not sure why this doesn't work):</p>
  
  <pre><code>import UIKit
  import HealthKit
  
  class ViewController: UIViewController {
  
  let health: HKHealthStore = HKHealthStore()
  let heartRateUnit:HKUnit = HKUnit(fromString: "count/min")
  let heartRateType:HKQuantityType   = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!
  var heartRateQuery:HKQuery?
  
  
  override func viewDidLoad() {
      super.viewDidLoad()
      // Do any additional setup after loading the view, typically from a nib.
  }
  
  override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
  }
  
       @IBAction func authorizeTapped(sender: AnyObject) {
      print("button tapped")
      self.createStreamingQuery()
      HealthKitManager.authorizeHealthKit()
  
  }
  
  
  func createStreamingQuery() -&gt; HKQuery
  {
      let queryPredicate  = HKQuery.predicateForSamplesWithStartDate(NSDate(), endDate: nil, options: .None)
  
      let query:HKAnchoredObjectQuery = HKAnchoredObjectQuery(type: self.heartRateType, predicate: queryPredicate, anchor: nil, limit: Int(HKObjectQueryNoLimit))
      { (query:HKAnchoredObjectQuery, samples:[HKSample]?, deletedObjects:[HKDeletedObject]?, anchor:HKQueryAnchor?, error:NSError?) -&gt; Void in
  
          if let errorFound:NSError = error
          {
              print("query error: \(errorFound.localizedDescription)")
          }
          else
          {
              //printing heart rate
              if let samples = samples as? [HKQuantitySample]
              {
                  if let quantity = samples.last?.quantity
                  {
                      print("\(quantity.doubleValueForUnit(self.heartRateUnit))")
                  }
              }
          }
      }
  
      query.updateHandler =
          { (query:HKAnchoredObjectQuery, samples:[HKSample]?, deletedObjects:[HKDeletedObject]?, anchor:HKQueryAnchor?, error:NSError?) -&gt; Void in
  
              if let errorFound:NSError = error
              {
                  print("query-handler error : \(errorFound.localizedDescription)")
              }
              else
              {
                  //printing heart rate
                  if let samples = samples as? [HKQuantitySample]
                  {
                      if let quantity = samples.last?.quantity
                      {
                          print("\(quantity.doubleValueForUnit(self.heartRateUnit))")
                      }
                  }
              }//eo-non_error
      }//eo-query-handler
  
      return query
  }
  
  
  }
  </code></pre>
  
  <p>I can't get anything to print to the console, which is really just what I want.</p>
  
  <p>Also - none of this code is going towards homeworks, personal/professional projects...etc. Its just for fun/to learn, and most of this code is what I tried and what I've found looking through multiple stack over flow and other forums.</p>