Невозможно получить место для плавания из метаданных тренировки - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь перечислить все данные моих тренировок по плаванию и отображать на консоли значение HKMetadataKeySwimmingLocationType.

переопределить func viewDidLoad () {super.viewDidLoad ()

    // print on console all the "root" objects

    print ("//////////-------- NEW WORKOUT --------/////////")

    if let startWorkout = workout?.startDate {
        print("Start Date: \(startWorkout.description(with: Locale.current))")
    }

    if let endWorkout = workout?.endDate {
        print("End Date: \(endWorkout.description(with: Locale.current))")
    }

    if let totalEnergyBurned = workout?.totalEnergyBurned {
        print("Total Energy Burned: \(totalEnergyBurned.doubleValue(for: HKUnit.kilocalorie())) kcal")
    }

    if let totalDistance = workout?.totalDistance{
        print("Total Distance: \(totalDistance.doubleValue(for: HKUnit.meter())) m")
    }

    if let totalDuration = workout?.duration {
        print("Total duration: \(formatTI(duration: totalDuration))") 
    }

    if let totalStrokeCount = workout?.totalSwimmingStrokeCount
    {
        print("Total Stroke Count: \(totalStrokeCount.doubleValue(for: HKUnit.count())) strokes")
    }

    if let metadatasWorkout =  workout?.metadata{
        for (key,value) in metadatasWorkout {
            switch key {
            case HKMetadataKeyLapLength:
                print ("\(key.description) : \(value)")
            case HKMetadataKeyIndoorWorkout:
                print ("\(key.description) : \(value)")
            case HKMetadataKeySwimmingLocationType:
                switch value {
                    case HKWorkoutSwimmingLocationType.pool:
                        print ("\(key.description) : POOL")
                    case HKWorkoutSwimmingLocationType.openWater:
                        print ("\(key.description) : OPENWATER")
                    case HKWorkoutSwimmingLocationType.unknown:
                        print ("\(key.description) : UNKNOWN")
                    default:
                        print ("\(key.description) : OTHER")
                        print ("\(key.description) : \(value)")
                }

            case HKMetadataKeySwimmingStrokeStyle:
                print ("\(key.description) : \(value)")
            default:
                print ("Default!! \(key.description) : \(value)")
            }
        }

}

со следующим выводом:

HealthKit успешно авторизован.////////// -------- НОВАЯ ТРЕНИРОВКА -------- ///////// Дата начала: понедельник, 1 октября 2018 года в 19:12:28 Центральноевропейское летнее время. Дата окончания: понедельник, 1 октября 2018 года в 19:26:03. Центральноевропейское летнее время. Общая сожженная энергия: 112.20791988510304 ккал. Общее расстояние: 550,0 м. Общая продолжительность: 13 м. Общее число ходов: 250,0 ударов.

Мой вопрос:

Поскольку значение HKWorkoutSwimmingLocationType равно 1, почему система не выполнила следующие строки?

case HKWorkoutSwimmingLocationType.pool: print ("(ключ.description): POOL ")

В документации Apple значение HKWorkoutSwimmingLocationType.pool равно 1 ...

...