使用MeasurementFormatter将米显示为英尺

时间:2016-10-03 22:23:48

标签: ios swift3 nsmeasurementformatter 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 个答案:

答案 0 :(得分:3)

您应该将格式化程序的unitOptions设置为naturalScale

let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitOptions = .naturalScale

如果您希望任何语言环境中的每个用户都能看到特定语言环境中的值,则只应设置语言环境。