我无法获得新的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
应该做的事情。有没有办法让它做我需要的?
答案 0 :(得分:3)
您应该将格式化程序的unitOptions
设置为naturalScale
:
let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitOptions = .naturalScale
如果您希望任何语言环境中的每个用户都能看到特定语言环境中的值,则只应设置语言环境。