HKQuantity+AnyConvertible.swift 962 B

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