如何阅读healthKit心率数据?

我知道这个问题已经被问到,但还没有真正的答案。 我已经尝试了这样的线程: 心率与苹果公司的Healthkit

我试图从Objective-C转换到Swift,但没有工作。

我的问题是,什么是阅读健康包的心率数据的最佳方式。 我希望能够读取每次心率测量的时间,我希望能够看到所述测量的时间/date戳。

我在这里要求许可:

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 } } } 

这里是我现在的视图控制器代码(我不知道为什么这不起作用):

 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() -> 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?) -> 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?) -> 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 } } 

我无法得到任何东西打印到控制台,这真的只是我想要的。

此外,这些代码都不会用于作业,个人/专业项目等。 它只是为了好玩/学习,而这些代码的大部分是我尝试过的,而且我发现通过多个stream程和其他论坛进行查找。

你需要真正执行你的查询。

 let query = self.createStreamingQuery() self.health.executeQuery(query)