HKQuantity+AnyConvertible.swift 913 B

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