如何从MeasurementFormatter结果中获取本地化的单位符号?

时间:2018-01-11 09:38:57

标签: ios swift measurementformatter

我正在尝试使用测量格式器获取任何测量的本地化单位符号。

例如,如果区域设置使用华氏度,但应用程序将其数据存储在摄氏度中,我将创建一个测量格式化程序,如下所示:

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

这最后一行会给我“50°F”。 现在我想从测量中得到“°F”值。

我尝试过使用

formatter.string(from: measurement.unit)

但这只是给了我“deg.C”

提前致谢!

3 个答案:

答案 0 :(得分:0)

您可能只需要设置格式化程序的语言环境,如下所示:

class MainActivity : AppCompatActivity {

    ...

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        ...
        sv.setSearchableInfo(sm.getSearchableInfo(componentName))
        ...
     }

}

或者,如果您想获取设备的当前区域设置并从中进行设置,请执行以下操作:

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

然后

formatter.locale = Locale.current

答案 1 :(得分:-1)

为了得到“°F”,我认为你必须将格式化程序的语言环境设置为“en_US”。

答案 2 :(得分:-1)

将我的Mac pref设置为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