HKQuantity+AnyConvertible.swift 958 B

123456789101112131415161718192021222324252627282930313233
  1. // LoopFollow
  2. // HKQuantity+AnyConvertible.swift
  3. // Created by Jonas Björkert on 2024-07-28.
  4. import HealthKit
  5. class HKQuantityWrapper: AnyConvertible {
  6. let quantity: HKQuantity
  7. init(quantity: HKQuantity) {
  8. self.quantity = quantity
  9. }
  10. func toAny() -> Any {
  11. return ["unit": UserDefaultsRepository.getPreferredUnit().unitString,
  12. "value": quantity.doubleValue(for: UserDefaultsRepository.getPreferredUnit())]
  13. }
  14. static func fromAny(_ anyValue: Any) -> HKQuantityWrapper? {
  15. // Convert dictionary back to HKQuantity
  16. guard let dict = anyValue as? [String: Any],
  17. let unitString = dict["unit"] as? String,
  18. let value = dict["value"] as? Double
  19. else {
  20. return nil
  21. }
  22. let unit = HKUnit(from: unitString)
  23. let quantity = HKQuantity(unit: unit, doubleValue: value)
  24. return HKQuantityWrapper(quantity: quantity)
  25. }
  26. }