Swift – Как извлечь HKUnit из healthStore.preferredUnits..?

Я использую HealthKit от Apple, и все правильно авторизовано и работает для моей локали (США).

Однако я хотел бы получить предпочтительные единицы пользователя (настройка HKUnit) для «distanceWalkingRunning». В моем случае это «ми» (для миль). Для других регионов мира это, конечно, может быть км и т. д.

Apple HealthStore предлагает эту функцию:

func preferredUnits(for quantityTypes: Set<HKQuantityType>, 
     completion: @escaping ([HKQuantityType : HKUnit], Error?) -> Void)

Когда я использую эту функцию в коде ниже:

var usrPreferredDistUnits: HKUnit?        
let quantityType : Set = [HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.distanceWalkingRunning)!]
healthStore.preferredUnits(for: quantityType) { (preferredType, error) in
   //self.usrPreferredDistUnits = preferredType; // error! how to extract HKUnit???
   print("\(preferredType)") }

Я получаю следующие результаты печати:

[HKQuantityTypeIdentifierDistanceWalkingRunning: mi]

Это правильно для моей локали («ми» для Майлза), поэтому мой код работает, как и ожидалось.

Однако я не могу понять синтаксис для «извлечения» ТОЛЬКО части HKUnit (= mi) возвращаемой пары значений в мою переменную «var предпочитаемыйDistanceUnit: HKUnit?».

Может ли кто-нибудь помочь мне с правильным синтаксисом для этой строки кода!?

Спасибо!


person Gerard    schedule 26.05.2020    source источник


Ответы (1)


ОК - сам разобрался!

Правильный ответ:

self.usrPreferredDistUnits = preferredType.first?.value;
person Gerard    schedule 26.05.2020
comment
Имейте в виду, что единица измерения — это либо то, что было выбрано в приложении «Здоровье» для отображения образцов данного типа количества, либо единица измерения по умолчанию для этого типа в текущей локали устройства. - person Richard Witherspoon; 02.08.2021