Используйте MeasurementFormatter для отображения метров в футах
У меня проблемы с получением нового MeasurementFormatter
класс, чтобы дать мне результаты в соответствующих единицах. У меня есть значения в метрах, которые я хочу отображать в локализованных строках, в метрах или футах в зависимости от локали пользователя.
У меня есть это:
let meters : Double = 10
let metersMeasurement = Measurement(value: meters, unit: UnitLength.meters)
let measurementFormatter = MeasurementFormatter()
measurementFormatter.locale = Locale(identifier: "en_US")
let localizedString = measurementFormatter.string(from: metersMeasurement)
Это дает мне строку "0.006mi". Думаю, это правильно, но конвертировать 10 метров в мили довольно нелепо. То, что я хочу, это "32,8 фута".
.providedUnit
вариант на MeasurementFormatter
не помогает - это просто дает мне результат в метрах.
Я мог бы посмотреть текущую локаль и разобраться с этим сам, но это именно то, что MeasurementFormatter
предполагается сделать ненужным. Есть ли способ заставить его делать то, что мне нужно?
1 ответ
Вы должны установить форматировщик unitOptions
в naturalScale
:
let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitOptions = .naturalScale
И вы должны установить локаль только в том случае, если вы хотите, чтобы каждый пользователь в любой локали увидел значение в конкретной локали.