Как получить доступ к метаданным тренировки в аптечке с помощью Swift

ios swift health-kit hksamplequery

986 просмотра

3 ответа

256 Репутация автора

Я могу получить базовые данные о таких действиях, как durationи totalEnergyBurnedт. Д. Но как мне получить доступ к таким метаданным 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и даты из этого?

Автор: Byte Источник Размещён: 19.07.2016 07:37

Ответы (3)


1 плюс

5793 Репутация автора

Есть metadataсвойство словаря на HKSample. Вы можете напечатать значение следующим образом:

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

Автор: Allan Размещён: 19.07.2016 06:19

3 плюса

84 Репутация автора

Попробуйте следующее:

print("was user entered --> \(workout.metadata?[HKMetadataKeyWasUserEntered])")
Автор: New To iOS Dev Размещён: 06.02.2018 07:13

0 плюса

1 Репутация автора

Я понял, как работать с метаданными.

            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)
                    }
                }
Автор: Андрей Витвицкий Размещён: 04.04.2019 01:59
Вопросы из категории :
32x32