簡體   English   中英

如何使用Swift訪問Healthkit中鍛煉的元數據

[英]How to access metaData of workout in healthkit using Swift

我可以獲取活動的基本數據,例如durationtotalEnergyBurned等。但是如何訪問諸如HKWasUserEntered startDate類的元數據?

到目前為止,這是我的代碼

var predicate = HKQuery.predicateForWorkoutsWithWorkoutActivityType(HKWorkoutActivityType.Cycling)
 let sampleQuery = HKSampleQuery(sampleType: HKWorkoutType.workoutType(), predicate: predicate, limit: 0, sortDescriptors: [sortDescriptor])
    { (sampleQuery, results, error ) -> Void in

        if let queryError = error {
            print( "There was an error while reading the samples: \(queryError.localizedDescription)")
        }
        else
        {
            print(results!)
          for samples: HKSample in results! {
                var workout: HKWorkout = (samples as! HKWorkout)
                print("workout Distance is \(workout.totalDistance)")
                print("workout Energy Burned is \(workout.totalEnergyBurned)")
                print("workout Duration in seconds is \(workout.duration)")

            }
        }
        completion(results,error)
    }

    executeQuery(sampleQuery)

當我打印results我得到這個回報

[(46)“健康”(9.3.2)元數據:{HKWasUserEntered = 1; } 2016-07-18 10:58:00 +0500 2016-07-18 11:58:00 +0500]

所以基本上我該如何從中獲取HKWasUserEntered和日期?

請嘗試以下操作:

print("was user entered --> \(workout.metadata?[HKMetadataKeyWasUserEntered])")

HKSample上有一個metadata字典屬性。 您可以這樣打印值,例如:

print("workout was user entered \\(workout.metadata[HKWasUserEntered])")

我了解如何使用元數據。

            if let metadata = workout.metadata {
                if let  mataTemperature = metadata[HKMetadataKeyWeatherTemperature] {
                    if let quantityTemperature = mataTemperature as? HKQuantity {
                        let celsius = quantityTemperature.doubleValue(for: HKUnit.degreeCelsius())
                        print(celsius)
                    }
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM