-1

我正在为 IOS 应用程序在 Swift 中构建一个应用程序。我只想显示上次保存的 Healthkit 心率。有人可以在这里帮助我吗?

我的授权请求:

static func authorizeHealthKit() {

let HeartRateData: Set = [
    HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate)!,
    ]
HealthStore.requestAuthorization(toShare: HeartRateData, read: HeartRateData) {_,_ in }

}

    @IBAction func authorizeTapped(_ sender: AnyObject) {
        HeartrateViewController.authorizeHealthKit()
    }

获取心率:

func fetchHeartRateWithCompletionHandler (_ completionHandler: @escaping (Double?, NSError?)-> ()) {

    let now = Date()
    let startDate = now
    let endDate = now

let HeartRateSampleType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate)
let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: .strictStartDate)

let HeartRate = HKStatisticsQuery(quantityType: HeartRateSampleType!, quantitySamplePredicate: predicate, options: .cumulativeSum)
{ query, result, error in
    if result != nil {
        completionHandler(nil, error as NSError?)
        return
    }

    var HeartRateData = 0.0

    if let quantitiy = result!.sumQuantity() {
        let heartRateUnit = HKUnit(from: "count/min")
        HeartRateData = quantitiy.doubleValue(for: heartRateUnit)
    }

    completionHandler(HeartRateData, error as NSError?)

    }
    HeartRateTextField.text = String (describing: HeartRate)



}

但它不会在心率文本字段中显示任何内容。

4

1 回答 1

0

你在执行查询吗?

此外,您正在创建的查询效率不高。您的开始日期和结束日期相同,谓词不会在它们之间找到 heartRate 样本。如果您正在寻找最新的心率样本,请阅读 anchoredObjectQuery。

于 2017-01-03T09:59:36.620 回答