Удалить юниты из HKQuantity

Есть ли способ получить значение HKQuantity без единицы после него? В настоящее время HKQuantities появляются как:

  • 69201,8 м
  • 543 ккал
  • 2 счета / с
  • и т.п.

В идеале я хотел бы получить в качестве строки averageQuantity или sumQuantity, чтобы я мог изменить способ его отображения.

1 ответ

Решение

Результат звонка [HKQuantity description] не предназначен для отображения. В общем то [NSObject description] в первую очередь предназначен для удобства отладки. Вы должны использовать [HKQuantity doubleValueForUnit:] чтобы получить значение, которое вы хотите отобразить, а затем отформатируйте значение, используя NSNumberFormatter и ваш собственный локализованный текст для устройства. HealthKit не предоставляет средства локализации для значений или единиц.

В документации Apple HealthKit указано, что вам следует использовать класс MeasurementFormatter:

Вы можете использовать MeasurementFormatter для определения таких величин, как длина, масса и энергия. Для других количеств вам необходимо выполнить преобразование и локализовать данные самостоятельно.

https://developer.apple.com/documentation/healthkit/samples/units_and_quantities/defining_and_converting_units_and_quantities

также упоминается на NSHipster:

Единственные случаи, когда вы все еще можете использовать EnergyFormatter, MassFormatter или LengthFormatter, - это при работе со структурой HealthKit; Эти средства форматирования обеспечивают преобразование и взаимодействие с величинами HKUnit.

https://nshipster.com/formatter/

Другие вопросы по тегам