Как я могу получить локализованный символ единицы из результата MeasurementFormatter?

Я пытаюсь получить локализованный символ единицы для любого измерения, полученного с использованием средства форматирования измерений.

Например, если в локали используются градусы Фаренгейта, но приложение хранит эти данные в градусах Цельсия, я бы создал средство форматирования измерений следующим образом:

let formatter = MeasurementFormatter()
let measurement = Measurement(value: 10, unit: UnitTemperature.celsius)
formatter.string(from: measurement)

Эта последняя строка даст мне "50°F". Теперь я хочу получить значение "°F" из измерения.

Я пытался использовать

formatter.string(from: measurement.unit)

Но это только дает мне "град. C"

Заранее спасибо!

4 ответа

Вы, вероятно, просто должны установить язык форматирования следующим образом:

formatter.locale = Locale(identifier: "en-US")

Или, если вы хотите получить текущую локаль устройства и установить его, сделайте так:

formatter.locale = Locale.current

а потом

formatter.string(from: measurement.unit)

Немного опоздав на вечеринку, основываясь на ответе Ларса и комментарии Даниэля, следующий код позволяет вам получить локализованные единицы и значения:

      let measurement = Measurement<UnitTemperature>(value: 10, unit: .celsius)
let formatter = MeasurementFormatter()

let localMeasurement = measurement.converted(to: UnitSpeed(forLocale: .autoupdatingCurrent))

let unit = formatter.string(from: localMeasurement.unit)
let value = localMeasurement.value //.rounded()

Для того, чтобы получить "°F", я думаю, что вы должны установить язык форматирования на "en_US".

Когда мой префикс Mac установлен на en_US с температурой по Фаренгейту, следующий код дает мне то, что вы хотите в Objective-C:

NSUnitTemperature * fahrenheit = [NSUnitTemperature fahrenheit];
NSMeasurement * measurement = [[NSMeasurement alloc] initWithDoubleValue:35 unit:fahrenheit];
NSMeasurementFormatter * formatter = [[NSMeasurementFormatter alloc] init];

NSLog(@"%@", measurement.unit.symbol); // °F

Этот вывод: °F

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